最近在做一款小程序的时候,需要解析出unionId.
流程:
1 用户登录,获取授权(头像,昵称等)
2 获取到的iv和encryptData
3 传递code,iv, encryptData 然后给后端php去解析
老是间歇性的出现,41003的情况。
情况很不规律,有时候是iv中间有空格,有时候没有也会出现41003.
本着对功能负责的态度,我打了个log,然后比对前端传递的参数。
krFn%252BcTHLdodsoCwv7sZYw%253D%253D
krFn% 2BcTHLdodsoCwv7sZYw% 3D% 3D
发现会出现这种情况,是因为一方使用了encodeURIComponent
一方没有urldecode,双方统一之后(加上encode和decode),还是会有概率出现问题。
看论坛有前车之鉴的,前端同学在getUserInfo 里面的callback里面用了 wx.login。
看文档 wx.login 应该提前调用。
解决方案:在onshow里面就调用wx.login,把拿到的值存储起来。
完美解决了遇到的问题(仅第一次报 -41003,第二次往后都没有问题)
补充方案:
1、在onshow的时候调用wx.login把code存起来
2、在需要解密的时候判断下存起来的code是否存在,存在则使用,不存在则调用wx.login重新获取
3、不管服务器端解密成功与否,都清空存起来的code
无需 前后端通过encodeURIComponent或decode进行编码解码
您是不是sessionkey 过期了,如果过期了,需要wx.login 获取最新的sessionkey。
尝试获取最新的sessionKey再去解密。
也遇到过类似情况, 虽然是Python后端。
工具调试的时候同个微信getUserInfo,然后真机getUserInfo,第一次会有错误吗?
这么写就没有了