小程序
小游戏
企业微信
微信支付
扫描小程序码分享
- 当前 Bug 的表现
获取为微信手机号加密数据成功,解密失败。
项目中保证session_key是正确的,如果解密失败,会再次从腾讯服务器获取session_key,重新解密。
打印日志,在多次获取session_key一致的前提下(多次拿code去换),依旧解密失败。发现encryptedData数据也一致,但是解密失败。
```
因此判断是否是因为某种情况,导致微信返回手机号加密数据异常。
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
用同样的 sessionKey 解密一下 用户的加密信息,如果解密成功,说明sessionKey没问题
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
是这样的,不是每次都解密成功。但是我打印日志的时候发现,失败的时候encryptedData特别短。和解密成功的时候的数据长度差特别多。
所以有没有可能是某种情况下,微信返回的数据有问题呢?
刚刚试了一下,在本地复现了,然后用一样的sessionkey解密用户信息,是成功的。但是手机号码是失败的
https://blog.csdn.net/sj498541071/article/details/94438569
这个是后台解密的
下面是前台的,通过code获取都sessionkey后,直接取数据了
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html官方文档说的注意事项:(多阅读几遍应该就能找到问题)在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。
login
checkSession
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
用同样的 sessionKey 解密一下 用户的加密信息,如果解密成功,说明sessionKey没问题
是这样的,不是每次都解密成功。但是我打印日志的时候发现,失败的时候encryptedData特别短。和解密成功的时候的数据长度差特别多。
所以有没有可能是某种情况下,微信返回的数据有问题呢?
刚刚试了一下,在本地复现了,然后用一样的sessionkey解密用户信息,是成功的。但是手机号码是失败的
https://blog.csdn.net/sj498541071/article/details/94438569
这个是后台解密的
下面是前台的,通过code获取都sessionkey后,直接取数据了
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
官方文档说的注意事项:(多阅读几遍应该就能找到问题)
在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行
login
;或者在回调中先使用checkSession
进行登录态检查,避免login
刷新登录态。