当前位置: 主页 > 建站知识 > APP开发

微信小程序登录授权流程-微信小程序授权解除

发布时间:2023-03-19 22:20   浏览次数:次   作者:佚名

微信小程序登录授权流程_微信小程序授权解除_怎么授权微信小程序保存图片

为了方便小程序应用使用微信登录态进行授权登录,微信小程序提供了登录授权的开放接口。乍一看文档,感觉文档上讲的非常有道理,但是实现起来又真的是摸不着头脑,不知道如何管理和维护登录态。本文就来手把手的教会大家在业务里如何接入和维护微信登录态。

接入流程

这里官方文档上的流程图已经足够清晰,我们直接就该图展开详述和补充。

微信小程序开发实现登陆教程

首先大家看到这张图,肯定会注意到小程序进行通信交互的不止是小程序前端和我们自己的服务端,微信第三方服务端也参与其中,那么微信服务端在其中扮演着怎样的角色呢?我们一起来串一遍登录鉴权的流程就明白了。

微信小程序登录授权流程_怎么授权微信小程序保存图片_微信小程序授权解除

1. 调用wx.login生成code

wx.login()这个API的作用就是为当前用户生成一个临时的登录凭证,这个临时登录凭证的有效期只有五分钟。我们拿到这个登录凭证后就可以进行下一步操作:获取openid和session_key

wx.login({

success: function(loginRes) {

if (loginRes.code) {

微信小程序登录授权流程_微信小程序授权解除_怎么授权微信小程序保存图片

// example: 081LXytJ1Xq1Y40sg3uJ1FWntJ1LXyth

}

}

});

2. 获取openid和session_key

微信小程序登录授权流程_微信小程序授权解除_怎么授权微信小程序保存图片

我们先来介绍下openid,用过公众号的童鞋应该对这个标识都不陌生了,在公众平台里,用来标识每个用户在订阅号、服务号、小程序这三种不同应用的唯一标识,也就是说每个用户在每个应用的openid都是不一致的,所以在小程序里,我们可以用openid来标识用户的唯一性。

那么session_key是用来干嘛的呢?有了用户标识,我们就需要让该用户进行登录,那么session_key就保证了当前用户进行会话操作的有效性,这个session_key是微信服务端给我们派发的。也就是说,我们可以用这个标识来间接地维护我们小程序用户的登录态,那么这个session_key是怎么拿到的呢?我们需要在自己的服务端请求微信提供的第三方接口,这个接口需要带上四个参数字段:

微信小程序开发实现登陆教程

从这几个参数,我们可以看出,要请求这个接口必须先调用wx.login()来获取到用户当前会话的code。那么为什么我们要在服务端来请求这个接口呢?其实是出于安全性的考量,如果我们在前端通过request调用此接口,就不可避免的需要将我们小程序的appid和小程序的secret暴露在外部,同时也将微信服务端下发的session_key暴露给“有心之人”,这就给我们的业务安全带来极大的风险。除了需要在服务端进行session_key的获取,我们还需要注意两点:

session_key和微信派发的code是一一对应的,同一code只能换取一次session_key。每次调用wx.login()微信小程序登录授权流程,都会下发一个新的code和对应的session_key,为了保证用户体验和登录态的有效性,开发者需要清楚用户需要重新登录时才去调用wx.login()

怎么授权微信小程序保存图片_微信小程序授权解除_微信小程序登录授权流程

session_key是有失效性的,即便是不调用wx.login,session_key也会过期微信小程序登录授权流程,过期时间跟用户使用小程序的频率成正相关,但具体的时间长短开发者和用户都是获取不到的

function getSessionKey (code, appid, appSecret) {

var opt = {

method: \'GET\',

url: \'\',

微信小程序授权解除_微信小程序登录授权流程_怎么授权微信小程序保存图片

params: {

appid: appid,

secret: appSecret,

js_code: code,

grant_type: \'authorization_code\'

}

};