收藏
回答

encryptedData解析出无效数据

问题模块 框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
客户端 小程序 Bug iOS 11.3 6s 6.6.6

现在的调用流程是前端调用wx.getUserInfo获取iv和encrytedData,然后调用wx.login获取code,把这些数据传给后端,后端调用微信接口获取session_key对enceytedData进行解密,发现解出来的数据是错误的。

后端捕获到的error直接扔给了前端,前端拿到的信息是‘No JSON object could be decoded’,现在不太清楚这个错误的具体原因是什么?而且这个情况是频率比较高的偶现,有知道原因或者遇到一样情况的吗?

最后一次编辑于  2018-05-28  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

5 个回答

  • 凯
    2018-05-28

    顶一下,让官网看到~

    2018-05-28
    赞同 2
    回复
  • habbi
    habbi
    2018-05-28

    顶一下,让官方看到。

    2018-05-28
    赞同 1
    回复
  • Link
    Link
    2018-05-28

    仅提供这个错误信息无法定位问题。请逐步排查从前端传递到后台解密过程中的数据是否异常。

    2018-05-28
    赞同 1
    回复 2
    • 凯
      2018-05-29

      怎么排查呢?我们已经看过了 从前端给过去的code和encrytedData是没问题的,问题就是在解密的时候出现的~ 解析出来的是一堆乱码

      2018-05-29
      2
      回复
    • 夏木
      夏木
      04-02

      同意,我这边也遇到了同样的问题。今年开发一个新的小程序,后端程序都是以前可用的,前端去掉了 getuserInfo() ,使用 button 获取 userInfo ,userInfo 回调里调用 wx.login ,然后就非常频繁的解码失败。


      04-02
      回复
  • Zoelov
    Zoelov
    2018-05-29

    顶一下,让官网看到,我也遇到过这个问题。大部分的时候,是解密成功的,但有时候就是失败,而且,用官网提供的解密例子代码,也是同样解密不了,真蛋疼。

    2018-05-29
    赞同 1
    回复 4
    • 凯
      2018-05-31

      兄弟 我解决了 找到问题了

      2018-05-31
      回复
    • Zoelov
      Zoelov
      2018-05-31回复

      怎么解决的?什么问题?

      2018-05-31
      回复
    • 凯
      2018-05-31回复Zoelov

      能看到我上面的评论吗

      2018-05-31
      回复
    • 凯
      2018-05-31

      你刷新了sessionkey之后 重新获取了加密信息吗,要不然肯定解密失败了

      2018-05-31
      回复
  • PENL L
    PENL L
    2018-05-30

    我也遇到了。 自从,把wx.getUserInfo改为,button open-type="getuserinfo"之后, 经常发生,第一次,上报用户加密数据的时候,服务端会解密失败。


    异常消息:

    填充无效,无法被移除。


    然后,再点一次,就可以解密成功

    2018-05-30
    赞同 1
    回复 7
    • 凯
      2018-05-31

      兄弟 我解决了 找到问题了

      2018-05-31
      回复
    • PENL L
      PENL L
      2018-05-31

      是么,怎么解决的

      2018-05-31
      回复
    • 凯
      2018-05-31回复PENL L

      能看到我上面的评论吗


      2018-05-31
      回复
    • PENL L
      PENL L
      2018-05-31

      好像看不到,第一条和最后一条,都是,旧评论

      2018-05-31
      回复
    • 凯
      2018-05-31

      问题找到了,其实原因是这样的 ,我们在getuserinfo没改之前,是先wx.login() 拿到 code,然后再调用getuserinfo,拿到iv等加密信息,实际上在我们的后端是通过code去获取session-key等信息,用来解密我们给过去的 encryptedData加密信息的,但是你们注意下,这个getuserinfo一旦生成了,就不能再调用wx.login了,否则会导致后端从微信那边拿到的session-key不一样的,所以 现在登录方案改了以后,我们都是等授权完了 又去调用了一次login,这样就会有概率发生问题,不匹配了,所以我们为了确认一定没有问题,我现在是这么处理的,点击button的时候,getuserinfo只用来确认有没有授权,然后调用login拿到code后再去主动调用一次getuserinfo,从最新的userinfo中拿到最新的iv和 encryptedData传给后端,这样就能确保用了getuserinfo后不会再有wx.login的调用了,wx.login是会刷新session的,切记~

      2018-05-31
      1
      回复
    查看更多(2)