- 预期表现

可以对encryptedData正常解密。



- 复现路径

点击登录按钮后,小程序调用wx.login(),再将code、iv、encrypedData一起发往后端程序,后端程序调用微信api接口(api.weixin.qq.com/sns/jscode2session)希望获取openId,但经常会出现上图中的错误。


复现过程:

1、这个问题不是持续连续发生,而是在一段时间未操作小程序时,再次点击登录按钮触发登录操作的第一次时会发生,第二次及以后的登录操作则会成功。如果再过一段时间未操作小程序,当第一次登录的时候还是会出现这个现象——第一次登录不成功,后续登录操作可以成功。

2、问题的关键在于解密程序报错。将上述的ecryptedData、iv、session_key放入文档(貌似其中还有包括使用wx.getUserInfo()的描述,是否也要更新一下)中提供的demo.js程序运行,也会出现报错。


推测一下,会不会是encryptedData、iv或session_key数据不匹配导致解密失败。


目前只能在小程序端判断若出现Illegal Buffer Error这种情况,则再次自动发起认证。


类似的案例:

1、类似的这个问题

2、解密不完整的例子。

3、外站的例子:https://ruby-china.org/topics/32128

4、居然还有50%概

展开全部
收起
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Mckenzie

    17人对此回答表示赞同

    或者你不要sessionkey了,再按了按钮的接收方法里面直接wx.login,wx.getUserInfo

    展开
    17
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • Javon

    16人对此回答表示赞同

    @另一蜘猪我原来就是这么做的,现在wx.getUserInfo不是要“逐渐”废掉吗?官方关于wx.getUserInfo的帖子在这里

    展开
    16
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • 吴怡然

    11人对此回答表示赞同

    调用wx。login之后sessionkey会发生变化,用发生变化的sessionkey去解密会失败,除非上一个还没失效,一般是wx.login之后再调用个wx.getUserInfo重新获取加密信息,再解密

    展开
    11
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • 酥油茶

    10人对此回答表示赞同

    这个没关系啊,你先微信小程序checkSession一次,如果过期了就wx.login然后wx.getUserInfo,没过期就不用管。

    展开
    10
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • ajavaf

    8人对此回答表示赞同

    我也同样的问题,谢谢各位大神。现在就是button授权确认了以后再次调用wx.login和wx.getUserInfo。。。服务器上存session_key太绕了

    展开
    8
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • 置之度外

    5人对此回答表示赞同

    求官方支持!

    展开
    5
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • W小姐

    4人对此回答表示赞同

    自己顶一下

    展开
    4
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • zqsg走一波

    4人对此回答表示赞同

    然而wx.getUserInfo将逐步被废弃

    展开
    4
    0回复
    发布于 5年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部