评论

获取手机号解密失败问题

获取手机号前端传值给后端解密失败的问题记录

口水话记录一下之前遇到的问题:

在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。


也就是说在触发getPhoneNumber方法(用户点击button)之前,就需要获取最新code;

因为调用getPhoneNumber方法就相当于获取到当前code对应的加密手机号,获取到了 然后再去wx.login就会刷新code,旧的加密和新的code肯定解密失败。

最好是在生命周期里面就获取最新的code保存下来

  onLoad: function (options{
    let that = this
    wx.checkSession({
      success() {
        // console.log('session_key 未过期,并且在本生命周期一直有效')
        that.setData({
          code: wx.getStorageSync('code')
        })
      },
      fail() {
        // console.log('session_key 已经失效,需要重新执行登录流程')
        wx.login({
          success(res) {
            if (res.code) {
              that.setData({
                code: res.code
              })
            }
          }
        })
      }
    })
  }
最后一次编辑于  2021-06-24  
点赞 2
收藏
评论

1 个评论

  • 孤行者
    孤行者
    2022-09-26

    这就是 自己bug 不想改 真垃圾

    2022-09-26
    赞同
    回复 1
    • destiny
      destiny
      2022-09-26
      ......    这是去年的,现在用不了了
      2022-09-26
      回复
登录 后发表内容