为了方便微信小程序应用使用微信登录态进行授权登录,微信小程序提供了登录授权的开放接口。文档乍一看好像很有道理,但具体实现起来确实比较混乱,不知道该如何管理和维护登录态。本文就来教大家如何在业务中访问和维护微信登录态。
访问流程
官方文档中的流程图已经足够清晰了,我们就直接进行阐述和补充吧。
首先大家看到这张图肯定会注意到,小程序之间的通讯交互不仅仅是小程序前端和我们自己的服务器之间,还有微信第三方服务器之间的通讯交互。那么微信服务器在这其中起到什么作用呢?下面我们一起来回顾一下登录认证的流程,了解一下。
1.调用wx.生成代码
这个API的作用是给当前用户生成一个临时的登录凭证,这个临时的登录凭证有效期只有五分钟,我们拿到这个登录凭证之后就可以进行下一步了:获取并
wx.({
:(){
如果(.代码){
// :
});
2. 获取并
我们先来介绍一下,用过公众号的朋友应该对这个标识很熟悉,在公众平台中它是用来在订阅号、服务号、小程序三个不同的应用中标识每个用户的唯一标识,也就是说每个用户的标识在各个应用中都是不一致的,所以在小程序中,我们可以利用它来标识用户的唯一性。
那么它是用来干什么的呢?有了用户ID,我们就需要让用户登录,这样才能保证当前用户操作的有效性。这个是微信服务器分发给我们的。也就是说我们可以通过这个ID间接的维护我们小程序用户的登录状态,那么这个我们怎么获取呢?我们需要在自己的服务器上请求微信提供的第三方接口。这个接口需要带四个参数字段:

从这些参数我们可以看出,请求这个接口,首先要调用 wx.() 获取用户当前 的 code。那么为什么需要在服务端请求这个接口呢?其实就是为了安全考虑。如果在前端调用这个接口,必然需要把我们的小程序和小程序暴露给外界,同时也要把微信服务端下发的数据暴露给“有心人”,这给我们的业务安全带来了很大的风险。除了需要在服务端进行的获取之外,我们还需要注意两点:
微信发放的code是一对一的,同一个code只能兑换一次,每次调用wx.()都会发放一个新的code和对应的code,为了保证用户体验和登录态的有效性,开发者需要在调用wx.()之前知道用户什么时候需要再次登录
是无效的,即使不调用wx.,也会过期,过期时间和用户使用小程序的频率正相关,但具体时间长短开发者和用户都不得而知。
(代码, , ) {
变量选择 = {
: \'得到\',
网址:\'\',
:{
:,
:,
: 代码,
:\'\'
};