微信小程序实现微信授权登录
新增getUserProfile接口
2021年4月28日24时后发布的小程序新版本,无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。
https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801
登录授权弃用
首先,需要通过button按钮来弹出授权框
<button open-type="getUserInfo" @getuserinfo="getUserInfo">微信登录</button>
getUserInfo(e) {
//拿到用户信息
信息包含头像,昵称
let detail = e.detail || {}
if (!detail.userInfo) {
return;
}
wx.login({
success(res) {
let code = res.code
if (res.code) {//获取code,发起网络请求
let data = {
jsCode: res.code,
}
this.$api.wxLoginApi(data).then(res=>{
if(res.code == 200){
// console.log(res)
if(res.result.openidList&&res.result.openidList[0]){
uni.setStorageSync('openid', res.result.openidList[0])
}
if(!res.result.firstLogin){//判断是否第一次微信授权,第一次要去绑定手机
uni.setStorageSync('userId',res.result.userId)
uni.setStorageSync('sessionId',res.result.sessionId)
isWorkshop()
}else{
const title="绑定手机"
uni.navigateTo({
url: `/pages/login/login?title=${title}&&type=1`
})
}
}else{
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
},
授权绑定手机号
<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">授权手机号</button>
getPhoneNumber(e) {
if(e.detail.encryptedData){
let params = {
openid:uni.getStorageSync('openid'),
encryptDataB64: e.detail.encryptedData,
ivB64: e.detail.iv,
},
this.$api.wxDecryptData(params).then(res => {//对返回的手机号信息解密,拿到手机号
if (res.code === 200) {
// console.log(res)
this.form.phone=res.result.phoneNumber
} else {
}
})
}
},
用户信息授权框授权后不再出现,手机号授权授权框一直可以出现