已解决。小程序获取手机号时,session_key解密失败
发布于 4 年前 作者 pingyin 5085 次浏览 来自 分享

小程序获取手机号偶尔解密失败

  • 一开始我的处理方式是在页面直接用checkSession,但这里check回调只要是wx.login过全都是“success”。后面导致大概率的解密失败
  • 无脑操作wx.login()也可以解决,但是也会概率出现。
  • 参考了一个朋友的做法,在Page onLoad的时候执行一次wx.login(),然后拿到新的session_key,再用此时的新key去解密就通了。或者改为请求解密之前执行一次登录,据说出问题的概率还是很大。
  • 最后,就是最好执行获取手机号之前再checkSession一下判断一下状态

问题的原头,由于session_key在验证的时候,不管是过期的key还是新的key都是success,都会出现失败,很难把控状态

思路就是用code换取后端的session_key,再把key带回去后端验证,这样就保证的key是一直保持一致的


onLoad: function(options{
       let that = this;
    wx.login({
      success(res) {
        request.sendGet({
          url'',
          data: {
            code: res.code
          }
        }).then(e => {
          that.setData({
            key: e.result.Key
          })
        })
      }
    })
},
bindgetphonenumber3(e) {
    if (e.detail.errMsg === "getPhoneNumber:ok") {
      let {
        key
      } = this.data;
      request.sendPost({
        url"",
        data: {
          iv: e.detail.iv,
          key,
          encryptedData: e.detail.encryptedData,
        }
      }).then(res => {
        console.log(res)// 登录信息
      })
    } else if (e.detail.errMsg === "getPhoneNumber:fail user deny") {
      wx.showModal({
        title'提示',
        content'你已拒绝授权,请重新点击并授权',
        showCancelfalse,
        confirmText"知道了"
      })
    }
  },
回到顶部