概要:
1.在小程序开发中,获取用户信息,获取手机号基本是必须用到的功能,但是在有些时候会遇到小程序解密失败的问题,这多数是因为前端这边登录流程出的问题。
2.会出错的流程:前端多数是把open-data的获取加密信息按钮做成登录按钮,然后点击的时候用wx.login获取code,成功后将加密信息和code传到后端直接调用解密手机号的接口,这样session_key可能没来得及刷新,从而导致解密失败,但是第二次解密一定会成功的现象
原因分析:
1.出错的原因:在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。
2.解决方案:建议提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。
解决代码:
1.在onLoad()函数中获取code

2.在点击微信授权按钮时,检查之前获取的code是否过期,如果过期则重新获取;如果没有过期则发送解密请求给后端。

3.发送解密请求的前端逻辑。(后续的success与fail请根据自己的情况添加)







