解决首次微信授权登录异常,需要二次授权的问题

很多朋友在微信授权的时候会遇到首次授权失败,二次授权才可以成功的情况。这种请款的出现应该是授权是获取的code的获取顺序出错了。

下面我们看下小编的一个正确和错误的写法

1、正确顺序:先wx.login拿到code,再执行getPhoneNumber的方法调起授权

2、错误的方法:先getPhoneNumber的方法调起授权再通过wx.login获取code

下面是代码示范:

错误的示范:

getPhoneNumber (e) {
    if (e.detail.errMsg === 'getPhoneNumber:ok') {
      wx.login({
        success(rs) {
          if (rs.code) {
            LoginTokenApi({// LoginTokenApi 后台接口请求的方法  自己封装的
              code: rs.code,
              encryptedData: e.detail.encryptedData,
              iv: e.detail.iv,
              source: 0
            })
              .then(res => {
                console.log('-----------授权登录成功-----------------------', res)
                if (res && +res.code === HttpStatus.SUCCESS) {
                   // HttpStatus.SUCCESS 自己封装的后台接口请求成功的code,200或200000
                  setLocalData(res)
                } else {
                  showToast(res.message)
                }
              })
              .catch(err => {
                console.log('-------登陆失败------', err)
              })
          }
        }
      })
    } else {
      showToast('授权登录失败')
    }
    console.log('授权登录')
  }

正确代码:

// 在 onload 或onshow方法中先执行
wx.login({
  success: rs => {
    if (rs.code) {
      setLoginCode(rs.code)
    }
  }
})

// 再 点击调起
getPhoneNumber (e) {
    if (e.detail.errMsg === 'getPhoneNumber:ok') {
      LoginTokenApi({ // LoginTokenApi 后台接口请求的方法
        code: loginCode,
        encryptedData: e.detail.encryptedData,
        iv: e.detail.iv,
        source: 0
      })
        .then(res => {
          console.log('-----------授权登录成功-----------------------', res)
          if (res && +res.code === HttpStatus.SUCCESS) {
            // HttpStatus.SUCCESS 自己封装的后台接口请求成功的code,200或20000
            setLocalData(res)
          } else {
            showToast(res.message)
          }
        })
        .catch(err => {
          console.log('-------登陆失败------', err)
        })
    } else {
      showToast('授权登录失败')
    }
  }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值