多数是因为前端这边登录流程出的问题
会出错的流程:前端多数是把open-data的获取加密信息按钮做成登录按钮,然后点击的时候wx.login,成功后直接调用解密手机号的接口,这样sessionkey没来得及刷新(有一点点时间的差距),从而导致解密失败,但第二次解密一定成功的现象。
解决方案:(推荐方法1)
1、可以在流程上做改变:将原有的登录按钮做成一个普通按钮,点击后先wx.login然后跳转到open-data的按钮界面。
缺点:也是流程上的问题,就是如果对方在解密手机号的按钮点击"拒绝"解密的话,那么就会导致token出错,所以需要在登录流程完全完成后才能保存token。
2、在wx.login成功后,给一个定时器阻隔一下,基本300就不会再出错
setTimeOut(function(){
//解密手机
},100)
缺点:不稳定,还是有几率失败