收藏
回答

微信手机获取encryptedData失效

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug 获取微信步数 客户端 7.0.4 2.7.0

- 当前 Bug 的表现

获取为微信手机号加密数据成功,解密失败。



项目中保证session_key是正确的,如果解密失败,会再次从腾讯服务器获取session_key,重新解密。


打印日志,在多次获取session_key一致的前提下(多次拿code去换),依旧解密失败。发现encryptedData数据也一致,但是解密失败。

```


因此判断是否是因为某种情况,导致微信返回手机号加密数据异常。








最后一次编辑于  2019-07-08
回答关注问题邀请回答
收藏

3 个回答

  • Liufeng
    Liufeng
    2019-07-05

    用同样的 sessionKey 解密一下 用户的加密信息,如果解密成功,说明sessionKey没问题

    2019-07-05
    有用 1
    回复 3
    • 但求诸己
      但求诸己
      2019-07-05

      是这样的,不是每次都解密成功。但是我打印日志的时候发现,失败的时候encryptedData特别短。和解密成功的时候的数据长度差特别多。


      所以有没有可能是某种情况下,微信返回的数据有问题呢?

      2019-07-05
      回复
    • 但求诸己
      但求诸己
      2019-07-08

      刚刚试了一下,在本地复现了,然后用一样的sessionkey解密用户信息,是成功的。但是手机号码是失败的

      2019-07-08
      回复
    • Liufeng
      Liufeng
      2019-07-12回复但求诸己
      那说明 你的解密方法没有问题了。
      2019-07-12
      回复
  • 王浩
    王浩
    2019-10-18

    https://blog.csdn.net/sj498541071/article/details/94438569

    这个是后台解密的

    下面是前台的,通过code获取都sessionkey后,直接取数据了




    2019-10-18
    有用
    回复
  • 马路边撸代码的程序员
    马路边撸代码的程序员
    2019-08-10

    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
    官方文档说的注意事项:(多阅读几遍应该就能找到问题)
    在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。



    2019-08-10
    有用
    回复
登录 后发表内容