微信开放平台开发第三方授权登陆(五):微信小程序 您所在的位置:网站首页 微信公众号怎么授权登陆小程序 微信开放平台开发第三方授权登陆(五):微信小程序

微信开放平台开发第三方授权登陆(五):微信小程序

2024-07-13 18:31| 来源: 网络整理| 查看: 265

 微信开放平台开发系列文章:

微信开放平台开发第三方授权登陆(一):开发前期准备

微信开放平台开发第三方授权登陆(二):PC网页端

微信开放平台开发第三方授权登陆(三):Android客户端

微信开放平台开发第三方授权登陆(四):微信公众号

微信开放平台开发第三方授权登陆(五):微信小程序

 

目录

一、需求

二、开发流程

三、开发使用的技术及工具

1.前端(小程序)

1)自定义的全局变量

2)index加载时进行登录

3)授权页面authorization.wxml

4)用户信息发送给后端

5)用户详情页mine.wxml

2.服务端(Java)

1).配置文件新增小程序相关配置

2)获取openid以及Sessionkey

3).获取用户信息:

 

开发小程序需要在公众平台注册一个小程序账号,然后获取到小程序的AppID和AppSecret。就可以进行第三方登陆授权开发。

一、需求

拥有第三方微信登录功能,并获取到用户信息。

二、开发流程

小程序:

1. 微信小程序通过wx.login API进行登录获取code。由于AppID和AppSecret不能泄露给用户,根据code获取openid需要在服务端完成,所以需要将code发送给服务端

(服务端),并且带上授权临时票据code参数;

2. 服务端通过code和appid、APPSecret获取到openid和SessionKey。服务端需要返回自定义登录态给前端,不能返回SessionKey

3. 前端保存自定义登录态,获取用户信息时携带自定义登录态给后端。

获取Token的流程

三、开发使用的技术及工具

1、.后端采用IDEA2017 进行开发

2、前端使用微信开发者工具V1.02进行开发

3、使用fastJson对json数据进行处理

四、具体实现步骤

1.前端(小程序)

目录结构如下:

1)自定义的全局变量 globalData: {     userInfo: null,     sessionkey:null   }

自定义userInfo用于存储用户信息

sessionKey用于存储服务端发回给客户端的sessionkey

2)index加载时进行登录

用户登录后,服务端会返回一个sessionkey给客户端保存,如果为空,说明没有登录过,需要调用wx.login进行登录。

调用wx.login后,微信会返回一个code给小程序,小程序需要通过这个code发送给自身的服务端来获取sessionkey和openid信息。

onLoad: function() {     var serverUrl = app.serverUrl;     // 加载时,检查当前用户信息是否登录     if (app.globalData.sessionkey != null) { // 已经登录了       // 是否授权       wx.getSetting({         success: function(res) {           if (res.authSetting['scope.userInfo']) {             // 已经授权,可以直接调用 getUserInfo 获取头像昵称             wx.getUserInfo({               success: function(res) {                 app.globalData.userInfo = JSON.parse(res.rawData);               }             })           } else {             // 还没有授权,则需要授权             wx.redirectTo({               url: '../authorization/authorization'             })           }         }       })     } else { // 还没有登录       // 提示用户登录授权       wx.login({         success: res => {           // 发送 res.code 到后台换取 openId, sessionKey, unionId           if (res.code) {             // 发送请求,服务端能获取到openid和unionid,之前登录过则可以获取到之前的用户信息。             wx.request({               url: serverUrl + '/miniprogram/login/' + res.code, //请求路径               method: "GET",               success: function(res) {                 app.globalData.sessionkey = res.data;                 // 进入授权                 wx.redirectTo({                   url: '../authorization/authorization'                 })               }             })           }         }       })     } },

登录成功后,重定向到授权页面

3)授权页面authorization.wxml  


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有