当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 获取手机号偶尔报错(code失效问题)

获取手机号偶尔报错(code失效问题)

2020年07月23日  | 移动技术网IT编程  | 我要评论

前言:
获取手机号的时候有时候成功,有时候失败,主要原因是我们获取的code失效。

正常的点击逻辑
用户点击第一次获取手机号的时候是必须要成功的,成功后点第二次的时候报错也没关系,因为第一次成功了,已经有了数据,第二次报错并不影响什么,主要第一次必须成功就可以了。

下面我们要怎么解决第一次必须成功呢?
首先我们要知道原因是code失效导致的,所以我们第一步要在点击获取手机的按钮之前要有code

代码呈现

  1. 在微信生命周期获取code,并放在data里面保存,我实在onShow生命周期进行保存。
wx.login({
   success: res => {
       this.setData({code: res.code})    //记得在data里面定义一个code
   },
   fail: res => {
       //失败
   }
})
  1. 用微信官方获取手机号时间的button
<button plain="{{true}}" bindgetphonenumber="bindgetphonenumber" open-type="getPhoneNumber" >绑定手机号</button>
  1. 开始写获取手机号的事件
我用的是async
  async bindgetphonenumber(e) {
    if (e.detail.errMsg.includes('ok')) {
      const { encryptedData, iv } = e.detail
      let Id = wx.getAccountInfoSync();
      let appId = Id.miniProgram.appId
      let params = {
        code: this.data.code, // 刚刚获取的code
        appid: appId,
        secrect: '写的是你的秘钥'
      }
      //这是我自己封装的微信小程序的request,跟微信小程序的request一样,值相对应的好了
      let key = await request({ url: '写自己后台解密session_key的接口', data: params })
      wx.setStorageSync('sessKey', key.data)
      let sessionKey = key.data.session_key
      try {
        let phone = await request({ url: '写自己后台解密解密手机号的接口', data: { encryptedData, sessionKey, iv } })
        if (phone.statusCode == 200) {
          await showToast({title:'绑定成功'})
          let Token = phone.data.message.token
          let userId = phone.data.message.user_id
          let user_phone = phone.data.message.user_phone
          wx.setStorageSync('token', Token)
          wx.setStorageSync('userId', userId)
          wx.setStorageSync('user_phone', user_phone)
        }
      } catch (error) {
        console.log(error)
      }
    } else {
      await showToast({ title: '你点击了取消手机号授权...' })
    }
  },

后言:
如果你们写的逻辑跟我不一样的话,那你只要知道偶然手机号获取失败,是code失效导致的。我写的是第一次获取是必须成功的,不刷新页面的话,除了第一次其他都是会失败的,只要刷新页面,就会生成一个新的code,然后第一次还是必定会成功,然后除了第一次其他不会成功,我感觉这是符合正常的逻辑。如果觉得我的逻辑不是正常的话,那就按照你的逻辑走。

本文地址:https://blog.csdn.net/wupinlong/article/details/107482561

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网