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

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

很多朋友在微信授权的时候会遇到首次授权失败,二次授权才可以成功的情况。这种请款的出现应该是授权是获取的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('授权登录失败')

}

}