收藏
回答

解析 encryptedData 错误

失败比较频繁。

现在还是在开发阶段,所以登陆的比较频繁,而且每次登陆都会经过下列步骤:

  1. 通过  button 去获取 iv ,  encryptedData

  2. 通过 wx.login 获取 code

  3. 将上述 3 个参数传给后台

  4. 后台通过 code2session 换取 session_key

  5. 使用 session_key iv 解析 encryptedData

  6. 有时会解析失败,有时会成功。

这是什么问题?

还是说我的登陆逻辑有问题?




回答关注问题邀请回答
收藏

4 个回答

  • 半寸灰
    半寸灰
    2018-10-17

    wx.login 应该放在获取用户信息前面

    因为wx.login 后可能导致 session_key与获取信息时的   session_key不一致

    导致解密失败

    wx.login 一般要检查session_key失效再使用的  

    2018-10-17
    有用 1
    回复 4
    • 对方正在输入....
      对方正在输入....
      2018-10-17

      也就是说,要先 checkSession 检查是否失效,失效了再 login ,无论失效与否均 getUserInfo ,这样下来吗?

      2018-10-17
      回复
    • 半寸灰
      半寸灰
      2018-10-17回复对方正在输入....

      最好是能提前获取session_key

      2018-10-17
      回复
    • 朱矛宇
      朱矛宇
      2018-10-17

      难道getUserInfo之后,  session_key失效, wx.login 获取到了新session_key.用新session_key解码旧encrptedDate出错???这个概率有点小.......


      你的意思可能是getUserInfo的时候微信服务器不会去检查session_key失效,然后获取了一个旧session_key加密的encrptedDate 然后,wx.login的时候,微信服务器检查了一下session_key发现失效了,然后给了你一个新的session_key

      2018-10-17
      回复
    • 半寸灰
      半寸灰
      2018-10-17回复朱矛宇

      调用wx.login  有几率导致session_key更新

      所以建议 把session_key保存在数据库之类的

      每次小程序打开小程序 的时候  或者要用的时候  检查下session_key是否失效 失效就更新。

      getUserInfo时候 是新的session_key    可是你再wx.login  这个又有可能是最新的了     而这个最新的可能和新的 不一样

      所以getUserInfo的session_key 可能是旧的了

      2018-10-17
      回复
  • solar
    solar
    2019-10-23

    问题解决了么~我也时好时坏。

    2019-10-23
    有用
    回复
  • 不再
    不再
    2018-10-18

    请问 问题解决了吗 我这边解析

    encryptedData

    也是时好时坏

    2018-10-18
    有用
    回复
  • 2018-10-17

    可以检查一下iv和encryptedData 的值传到后台后是不是正确的

    2018-10-17
    有用
    回复 1
登录 后发表内容