小程序的登录
一般来说可将登录的方法写在app.js中,这样可方便其他的页面调用。
第一步,获取登录凭证(code)
调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。
getAppCode: function (callback) {
let _this = this;
wx.login({
success: function (data) {
// console.log(data);
callback && callback(data.code)
},
fail: function (err) {
//console.log('wx.login 接口调用失败,将无法正常使用开放接口等服务', err)
callback && callback(err)
}
})
}
第二步,得到code后用户登录授权,完成登录
login: function (callback) {
let _this = this;
_this.getAppCode(function (code) {
wx.getUserInfo({
success: function (res) {
let userInfo = res.userInfo;
// 调用后台接口 此post请求是封装过的,可以用微信的原生方法替代
request.POST(api.login, {
nickName: userInfo.nickName,
avatarUrl: userInfo.avatarUrl,
gender: userInfo.gender,
code: code
}, function (userRes) {
if (userRes && userRes.code == 'S00') { // 后台验证通过
let userResData = userRes.data;
wx.setStorage({
data: userResData.sessionKey,
key: 'sessionKey',
})
wx.setStorage({
data: userResData.token,
key: 'token',
});
wx.setStorage({
data: userInfo,
key: 'userInfo',
success: function () {
_this.globalData.userInfo = userInfo;
callback && callback(res);
}
});
} else { // 后台验证失败
}
})
}
})
})
}