获取手机号解密失败问题
发布于 3 年前 作者 ryu 3915 次浏览 来自 分享

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

在回调中调用 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
              })
            }
          }
        })
      }
    })
  }
回到顶部