微信小程序登陆流程

微信官方的小程序登陆流程图:

小程序登陆流程图

  1. 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
  2. 调用 code2Session 接口,换取 用户唯一标识 OpenID会话密钥 session_key

遇到的问题:

折腾了一天的问题:小程序中调用 wx.getUserInfo() 获取用户信息并上传到服务器,在服务器上使用 session_key 解密 encryptData 的时候有一定几率会报错 “ -41003:AES 解密失败”。

最终的解决方案是:一定要在 wx.login() 登陆拿到 session_key 之后再去获取用户授权,然后调用 wx.getUserInfo() 获取用户信息。

做了很多尝试,最后发现使用上一次登陆的 session_key 能够 100% 解密成功,才确定应该是 wx.login()wx.getUserInfo() 的调用顺序问题。至于为什么不是一直解密失败而是有一定的机率报错,微信官方的解释是:

wx.login 调用时,用户的 session_key 可能会被更新而致使旧 session_key 失效(刷新机制存在最短周期,如果同一个用户短时间内多次调用 wx.login,并非每次调用都导致 session_key 刷新)。


参考:

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html

 834 total views