微信小程序登录解密失败
小程序登录的时候,通过客户端获取的
code
等加密的信息
,传给后端解密,可是后端解密返回 -41003 问题踩坑过程
复现流程:
-
用户点击授权按钮。通过 按钮绑定
getUserInfo
方法。获取用户的加密信息 -
在
getUserInfo
方法中,调用wx.login
获取最重要的code
关于 code 的限时可以查看官方文档 获取微信登录 code -
根据前面 2 步获取的
code
和加密内容
,一起传给后端进行解密(后端代码不做深入解释)具体可以查看文档 小程序登录
在这之前,上面的方法还是好使的,先等待异步方法回调,然后获取wx.login
。这样能保证都能拿到 2 个值,可是今天解密失败了。而且很有规律性
第一次登录小程序 -> 返回 -41003
第二次(与第一次间隔5分钟内
)重新在点击授权 -> 解密成功
- 那么为什么是
5分钟内
?
因为code
的过期时间就是 5 分钟!
在看回上面的流程,我们是在获取用户信息后,才调用的wx.login
.根据文档最新的描述.重新调用wx.login
会刷新用户的登录状态。
解决方法:
- 在页面
onLoad
的时候调用wx.login
。提前获取code
值 - 通过授权按钮,获取加密信息
- 后续流程不变
- 这样也还有一个隐藏的问题。因为
wx.login
获取的code
也就5分钟有效期,万一用户打开了登录界面,5分钟都不登录呢?
那就。。那就。。。那就提示用户重新登录,然后重新调用wx.login
。等着用户重新点登录按钮把