微信小程序获取手机号发送给后台解密返回

碰到的问题: 在getPhoneNumber中调用wx.login从后台获取sessionKey之后后台解密失败,看了一下官方文档然后在回调中先检查登录态之后解决了问题

代码如下:

//获取用户手机号码
  getPhoneNumber: function(e) {
    let that = this;
    console.log(e.detail.iv)
    console.log(e.detail.encryptedData)

    //用户取消手机授权直接返回
    if (e.detail.iv == undefined && e.detail.encryptedData == undefined) {
      return;
    }

    //先检查sessionKey
    wx.checkSession({
      success: function() {
        console.log('sessionKey没过期直接请求');
 
          let param = {
            encryptedData: e.detail.encryptedData,
            sessionKey: app.globalData.sessionKey,
            iv: e.detail.iv,
          }

          util.request(myUrl.mainUrl + 'updateMobile/haha', param, 'GET', 1, function(res) {
            console.log(res) //请求返回的手机号以及其他信息
          })
       

      },
      fail: function() {
        console.log("session_key 已经失效,需要重新执行登录流程");

        //先更新sessionKey
//(我这里util.loginFlow是直接封装了一个函数把更新的sessionKey保存在全局里面l,请求成功拿到sessionKey之后写了一个回调)
        util.loginFlow(app, 0, () => {
          console.log(app.globalData.sessionKey);
          let param = {
             encryptedData: e.detail.encryptedData,
            sessionKey: app.globalData.sessionKey,
            iv: e.detail.iv,
          }

          util.request(myUrl.mainUrl + 'updateMobile/haha', param, 'GET', 1, function(res) {
            that.upgrad(res)
          })
        });
      }

    })

  },

 

你可能感兴趣的:(微信小程序)