1.login.wxml 点击登录按钮 调用获取授权的函数
<view class="login-container">
<image src="/images/pet.jpg" class="pet"></image>
<button class="btn-login" type="primary" open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="getUserInfo">授权登录</button>
</view>
2.login.js 获取用户的信息 微信头像、昵称、地区等
将这些userInfo存入全局变量中
同时获取openid:当用户点击登录页面的按钮后进行授权登录,如果成功,会有一个code,然后再向后台请求。
//授权
getUserInfo: function(e) {
console.log(e)
let self = this;
app.globalData.userInfo = e.detail.userInfo
console.log('****用户基本信息*****')
console.log(app.globalData.userInfo)
self.getOpenId();
},
//获取用户openid
getOpenId: function() {
let self = this
wx.login({
timeout: 10000,
success: (result) => {
if (result.code) {
wx.request({
url: `http://10.110.5.35:3000/getUserOpenId`,
data: {
code: result.code
},
success: res => {
console.log(res)
wx.reLaunch({
url: '/pages/index/index',
})
}
})
}
},
fail: () => {},
complete: () => {}
});
}
3.后台
//获取用户openid
router.get("/getUserOpenId", async (ctx, next) => {
let params = ctx.request.query;
console.log('*****params*****')
console.log(params)
const appId = ''; // AppID(小程序ID)
const appSecret = '';// AppSecret(小程序密钥)
try {
const res = await koa2Req({
url: `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${appSecret}&js_code=${params.code}&grant_type=authorization_code`
})
let data = JSON.parse(res.body);
ctx.body = {
"success": true,
"data": data
};
} catch (error) {
console.log(error)
ctx.body = {
"success": false,
"message": error
};
}
})
4.再首页index.js中判断用户是否登录的方法就是判断全局userInfo是否为null
onLoad: function() {
let self = this;
let userInfo = app.globalData.userInfo;
console.log('%%%%用户%%%%%%')
console.log(userInfo)
if(userInfo == null){
console.log('用户未登录,跳转到登录页面')
wx.redirectTo({
url: '/pages/login/login',
})
}
},