评论

关于微信小程序解密出现41003情况

关于微信小程序解密出现41003情况

最近在做一款小程序的时候,需要解析出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,把拿到的值存储起来。

点赞 6
收藏
评论

4 个评论

  • 小面包🍞
    小面包🍞
    2019-11-21

    完美解决了遇到的问题(仅第一次报 -41003,第二次往后都没有问题)

    补充方案:

    1、在onshow的时候调用wx.login把code存起来

    2、在需要解密的时候判断下存起来的code是否存在,存在则使用,不存在则调用wx.login重新获取

    3、不管服务器端解密成功与否,都清空存起来的code


    无需 前后端通过encodeURIComponent或decode进行编码解码

    2019-11-21
    赞同
    回复
  • 2019-06-04

    您是不是sessionkey 过期了,如果过期了,需要wx.login 获取最新的sessionkey。

    尝试获取最新的sessionKey再去解密。

    2019-06-04
    赞同
    回复
  • 坏时少爷
    坏时少爷
    2019-06-03

    也遇到过类似情况, 虽然是Python后端。

    2019-06-03
    赞同
    回复
  • 
    
    2019-06-03

    工具调试的时候同个微信getUserInfo,然后真机getUserInfo,第一次会有错误吗?

    2019-06-03
    赞同
    回复 1
    • 我会发着呆
      我会发着呆
      2019-06-03

      这么写就没有了

      2019-06-03
      回复
登录 后发表内容