• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
吃兔子的胡胡萝卜
帮助1

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

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

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

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

下面是代码示范:

错误的示范:

  1.  
    getPhoneNumber (e) {
  2.  
    if (e.detail.errMsg === 'getPhoneNumber:ok') {
  3.  
    wx.login({
  4.  
    success(rs) {
  5.  
    if (rs.code) {
  6.  
    LoginTokenApi({// LoginTokenApi 后台接口请求的方法 自己封装的
  7.  
    code: rs.code,
  8.  
    encryptedData: e.detail.encryptedData,
  9.  
    iv: e.detail.iv,
  10.  
    source: 0
  11.  
    })
  12.  
    .then(res => {
  13.  
    console.log('-----------授权登录成功-----------------------', res)
  14.  
    if (res && res.code === HttpStatus.SUCCESS) {
  15.  
                       // HttpStatus.SUCCESS 自己封装的后台接口请求成功的code,200或200000
  16.  
    setLocalData(res)
  17.  
    } else {
  18.  
    showToast(res.message)
  19.  
    }
  20.  
    })
  21.  
    .catch(err => {
  22.  
    console.log('-------登陆失败------', err)
  23.  
    })
  24.  
    }
  25.  
    }
  26.  
    })
  27.  
    } else {
  28.  
    showToast('授权登录失败')
  29.  
    }
  30.  
    console.log('授权登录')
  31.  
    }
学新通

正确代码:

  1.  
    // 在 onload 或onshow方法中先执行
  2.  
    wx.login({
  3.  
    success: rs => {
  4.  
    if (rs.code) {
  5.  
    setLoginCode(rs.code)
  6.  
    }
  7.  
    }
  8.  
    })
  9.  
     
  10.  
    // 再 点击调起
  11.  
    getPhoneNumber (e) {
  12.  
    if (e.detail.errMsg === 'getPhoneNumber:ok') {
  13.  
    LoginTokenApi({ // LoginTokenApi 后台接口请求的方法
  14.  
    code: loginCode,
  15.  
    encryptedData: e.detail.encryptedData,
  16.  
    iv: e.detail.iv,
  17.  
    source: 0
  18.  
    })
  19.  
    .then(res => {
  20.  
    console.log('-----------授权登录成功-----------------------', res)
  21.  
    if (res && res.code === HttpStatus.SUCCESS) {
  22.  
                // HttpStatus.SUCCESS 自己封装的后台接口请求成功的code,200或20000
  23.  
    setLocalData(res)
  24.  
    } else {
  25.  
    showToast(res.message)
  26.  
    }
  27.  
    })
  28.  
    .catch(err => {
  29.  
    console.log('-------登陆失败------', err)
  30.  
    })
  31.  
    } else {
  32.  
    showToast('授权登录失败')
  33.  
    }
  34.  
    }
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgiegak
系列文章
更多 icon
同类精品
更多 icon
继续加载