小程序授权登陆流程
1.授权 2.注册(获取用户信息) 3.登陆 4.授权获取微信绑定的手机号(判断用户身份)
WXML
//先注册再去获取用户信息比如手机号等
// 1. type类型为getUserInfo 获取用户信息
<button open-type="getUserInfo" bindgetuserinfo="joinbtn">立即加入</button>
// 2. type类型为getPhoneNumber 获取用户手机号
<button bindgetphonenumber="getPhoneNumber" openType="getPhoneNumber">保存</button>
JS
Page({
data: {
userInfo:"",
name:"",
img:"",
openid:"",
tokens:"",
code:"",
encryptedData:"",
iv:"",
level:"", //区分用户的角色
},
// 授权登陆
joinbtn (e) {
console.log(e);
try {
wx.setStorageSync('userInfo',e.detail.userInfo ) // 存本地以后会用到
} catch (e) { console.log(e)}
var ele=e.detail.userInfo;
this.setData({
// userInfo:ele.,
name:ele.nickName,
img:ele.avatarUrl
})
this.data.name=ele.nickName; //昵称
this.data.img=ele.avatarUrl; //头像
wx.login({
complete:(res)=>{
console.log("登录",res);
const code=res.code; //登陆的时候获取code在注册的时候会用到
console.log(code);
register(code).then(res=>{ //将code传到注册的接口上 获取到openid和tokens
console.log(res)
this.data.openid=res.data.openid;
this.data.tokens=res.data.tokens;
console.log(this.data.openid);
console.log(this.data.tokens);
try {
wx.setStorageSync('openid', this.data.openid)
} catch (e) { console.log(e)}
try {
wx.setStorageSync('tokens', this.data.tokens)
} catch (e) { console.log(e)}
// 用户信息的接口 获取(头像、昵称) 后台管理会用到
getnikename({openid:this.data.openid,nickname:this.data.name,avatar:this.data.img})
.then(res=>{
console.log(res);
}).catch(err=>{
console.log(err)
})
// 获取用户信息(判断用户是否授权过)
getpersonalmsg().then(res=>{
if(res.code==1){
console.log(res);
console.log(res.data.info)
if(res.data.info!==null){ //如果info不等于空说明用户注册过用户进来直接跳到主页
this.setData({ show: false });
wx.switchTab({
url: '/pages/msg/msg',
})
}else if(res.data.info==null){ //如果info等于空说明用户没有注册过用户进来直接跳到注册页
this.setData({ show: true });
this. getPhoneNumber();
wx.navigateTo({
url: '/pages/detailmsg/detailmsg',
});
}
}else if(res.code==0){
wx.showToast({
title: 'res.msg',
})
}
})
}).catch(err=>{
console.log(err)
});
},
})
},
// 获取手机号
getPhoneNumber(e){
console.log(e);
var item=e.detail;
console.log(this.data.name)
wx.login({
complete:(res)=>{
console.log("登录",res);
const code=res.code;
console.log(code);
//获取用户手机号接口
getphone({code:res.code,encryptedData:item.encryptedData,iv:item.iv})
.then(res=>{
if(res.code==1){
console.log(res.data.level);
this.setData({
level:res.data.level,
})
this.data.level=res.data.level;
console.log(this.data.level)
// 根据level判断用户身份跳不同的页面
if(this.data.level==1){
wx.navigateTo({
url: '/pages/detailmsg/detailmsg',
})
}else if(this.data.level==2){
this.setData({ show: false });
wx.navigateTo({
url: '/pages/Doctorswork/Doctorswork',
})
}
try {
wx.setStorageSync('phone', res.data.mobile);
} catch (e) { console.log(e)}
}else if(res.code==0){
wx.showToast({
title: 'res.msg',
})
}
}).catch(err=>{
console.log(err);
})
},
})
},
)}
加油,每天进步一点点