<button @tap="getUserInfo" type="primary" withCredentials="true" class="infobtn"></button>
微信小程序不允许主动获取用户信息,所以此处应该设置button按钮,供用户主动点击,在必要时提示用户需要获取用户信息。
getUserInfo(e){
wx.getUserProfile({
//此处为用户主动点击触发,可以获取用户昵称和头像
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
wx.login({
//此处为获取登录凭证(code)和用户id
success (loginRes) {
uni.request({
//该请求将code和用户昵称、头像传至后端,后端判断用户是否注册,并返回完整用户信息给前端,完成登录操作。
url:"https://www.example.com/mpregist",
method:'POST',
data:{"code":loginRes.code,"nickname":res.userInfo.nickName,"headicon":res.userInfo.avatarUrl},
success:(data)=> {
//接收用户信息,完成下一步操作
}
});
}
})
}
})
},
node后端API操作:
exports.mpregist=function(req,res){
var code=req.body.code;
var headicon=req.body.headicon;
var nickname=req.body.nickname;
var datas='';
var url="https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code="+code+"&grant_type=authorization_code";
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var userInfo=JSON.parse(body);
//获取用户信息userInfo,判断用户是否存在,不存在则进行用户注册
res.send(userInfo) //返回用户信息给前端处理
}
});
}
欢迎指正和共同探讨。