收藏
回答

使用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已经过期了.


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

3 个回答

  • Admin²⁰²⁰
    Admin²⁰²⁰
    02-13

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

    02-13
    赞同 1
    回复
  • 老张
    老张
    02-13

    先wx.login,再wx.getUserinfo

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

    所以才有 checkSession 接口

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

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