在实现微信小程序用户登录功能的时候遇到了一些坑。本来是想在getUserProfile中的success回调函数中嵌套使用wx.login功能,代码如下:
getUserProfile(e) {
wx.getUserProfile({
desc: '用户登录',
success: (res) => {
wx.login({
success (res) {
if (res.code) {
console.log("登录成功!" + res.code);
}
},
});
},
fail() {
}
});
}
无奈这个success条件怎么都触发不了,头像和昵称同样可以获取到。
经过一番学习,原来这个wx.getUserProfile
并不是一直都会调用的。
它会先检查数据是否已缓存(直接通过open-data获取的也是缓存),当已经缓存了,就不会再执行wx.getUserProfile
方法;如果没有缓存的话,就会调起会话框,当用户点击【确定】,才会执行success回调,否则会执行fail回调函数。