微信小程序登陆
官方文档
小程序登陆
登陆时序图:
微信小程序前端:
handleGetUserInfo(e) {
// console.log(e.detail.userInfo);
if (e.detail.userInfo) {
// 将用户登陆信息保存到本地
//console.log("登陆信息:" + e.detail.userInfo);
wx.setStorageSync('userInfo', e.detail.userInfo);
this.setData({
isLogin: true
})
wx.login({
success: function(res){
let code = res.code;
request({
url: "/js/stuquery/login",
data: code,
header: {
"Content-Type":"application/json"
},
method: 'POST'
})
.then(result => {
//判断登陆之后,返回的个人信息是否为空,如果个人信息为空的话,说明账号未被绑定,登陆状态不写入本次存储
if(JSON.stringify(result.data) !== '{}'){
wx.setStorageSync('student', result.data.student);
}
})
}
})
// 刷新页面
this.onShow();
} else {
console.log("用户拒绝授权!");
}
}
一般来说,我们登陆的目的是两个:
- 登陆之后,获取我们自己服务器上的信息
- 微信登陆之后获取微信用户的信息
我尝试过使用wx.login之后获取微信用户的信息,即调用wx.getuserinfo,但是,这会有一个问题,可能会无法获取到用户的授权(按照我们平常的思路应该是,用户点击登陆之后,微信小程序弹出授权弹框)
比如这样:
login(){
let _this = this;
wx.login({
success: function(res){
// 1. 获取code
let code = res.code;
// console.log(code)
request({
url: "/js/stuquery/login",
data: code,
header: {
"Content-Type":"application/json"
},
method: 'POST'
})
.then(result => {
// 判断是否绑定了
wx.setStorageSync('result', result.data);
wx.setStorageSync('student', result.data.student);
_this.setData({
isLogin: true
})
wx.getSetting({
success: function(res){
// 如果用户没有授权
console.log(res.authSetting['scope.userInfo'] === undefined);
if (undefined===res.authSetting['scope.userInfo']) {
console.log("开始授权");
wx.authorize({
scope: 'scope.userInfo',
success(){
console.log('授权完成')
},
fail(){
console.log("授权失败")
}
})
}else{
console.log("用户已经授权")
}
}
})
})
}
})
},
像上面这种做法,不知道是什么原因,wx.authorize无法调起弹框获取用户授权,所以一直是fail的状态