微信小程序授权登录步骤说明:
??????? 1.通过wx.getUserProfile() 获取到用户信息 ???????????? 这个方法必须添加 desc 属性才可以 ???????????? 这个方法返回了很多加密字段 ??????? 2.使用wx.login()? 获取到 登录凭证 ???????????? 获取到code值,这个code值就是登录凭证 ??????? 3.准备参数,发起请求,获取Token
代码:
1.通过wx.getUserProfile() 获取到用户信息
async getUserProfile() {
// 使用wx.getUserProfile 获取用户信息,必须传递 desc 字段
const [err,res] = await uni.getUserProfile({ desc:'获取用户信息,进行登录操作' }).catch(err => err)
// console.log(err)
// console.log(res)
// 判断是否获取用户信息成功 ---- > 拒绝
if(err !== null && err.errMsg === 'getUserProfile:fail auth deny') return uni.$showMsg('您取消了授权!')
判断是否获取用户信息成功 ---- > 确定 将用户的基本信息存储到 vuex 中
this.updateUserInfo(res.userInfo)
// 并且调用获取Token的方法
this.getToken(res)
},
通过console.log(res)打印出很多加密字段
?
? 2.使用wx.login()? 获取到 登录凭证
// 获取Token
async getToken(res) {
// console.log(res)
// console.log(loginRes)
// 调用wx.login()获取到登陆凭证
const [err,loginRes] = await uni.login().catch(err => err)
if(loginRes.errMsg !== 'login:ok') return uni.$showMsg('请重新授权!')
// 拼接请求参数
const loginParams = {
encryptedData:res.encryptedData,
rawData:res.rawData,
iv:res.iv,
signature:res.signature,
code:loginRes.code
}
const { data : loginStatus } = await uni.$http.post('/users/wxlogin',loginParams)
// console.log(loginStatus)
if(loginStatus.meta.status !== 200) return uni.$showMsg('登陆失败')
// 调用更新token的方法
this.updateToken(loginStatus.message.token)
},
|