收藏
回答

使用button open-type="getUserInfo"授权返回的数据解密失败

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug Android 10 HW P20 7.0.10

点击 button open-type="getUserInfo"获取用户数据encryptedData,再调用wx.login获取code,再encryptedData+code把传到服务器用auth.code2Session返回session_key解密错误,如果再点一次按钮,这时可以解密成功.


问题似乎是 button open-type="getUserInfo"返回的数据所使用的session_key已经过期了.


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

5 个回答

  • 禾店短剧系统
    禾店短剧系统
    2021-05-24

    插眼,等答案。

    2021-05-24
    有用 1
    回复
  • Admin ²º²³
    Admin ²º²³
    2020-02-13

    应该先login再getUserinfo,文档上有说过,如果getUserinfo后再login,code可能会刷新,传给服务端的可能是旧的code导致解密失败。

    2020-02-13
    有用 1
    回复
  • 老张
    老张
    2020-02-13

    先wx.login,再wx.getUserinfo

    2020-02-13
    有用 1
    回复 4
    • William
      William
      2020-02-13
      wx.getUserinfo已经被限制,新用户都不弹窗了直接返回fail,只能用button open-type
      2020-02-13
      回复
    • 老张
      老张
      2020-02-13回复William
      在button的回调里,先login再getUserinfo。
      2020-02-13
      回复
    • William
      William
      2020-02-13回复老张
      button事件已经返回encryptedData,看来只能忽略再用getUserinfo再拿个新的了,感觉浪费了
      2020-02-13
      回复
    • 老张
      老张
      2020-02-13回复William
      这个encryptedData在wx.login后,很可能就过期了,当然需要一个新的。
      2020-02-13
      回复
  • 李忠
    李忠
    2021-03-10

    这个问题解决了吗?我也出现偶尔解密数据失败的问题,失败前wx.checkSession返回是成功的,搞不清楚是后台解密数据时弄错了session_key,还是加密数据真有问题。

    2021-03-10
    有用
    回复
  • 白宦成 #Linux中国
    白宦成 #Linux中国
    2020-02-13

    所以才有 checkSession 接口

    https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.checkSession.html

    2020-02-13
    有用
    回复 1
    • William
      William
      2020-02-13
      getUserInfo应该用当前没有过期session_key加密数据,但感觉程序客户端缓存了上一次wx.login所使用的session_key.这样使得过程有些复杂,为些服务器也还得缓存上次该用户的session_key
      2020-02-13
      回复
登录 后发表内容
问题标签