不论 使用wx.openSetting 还是 wx.authorize 为用户授权后,我都是通过重新加载onLoad方法,来获取用户信息。
但是,在开发工具中,这种方案是好使的。我将项目上传至手机进行预览时,却无法获取用户信息。这是乍回事了?
开发工具:
点击允许执行如下函数:
toAuthorized:function(e){//重新授权
var that=this;
return new Promise(function (resolve, reject) {
//NO.1 首选判断下是未授权还是拒绝授权
wx.getSetting({
success: (res) => {
console.log(res.authSetting['scope.userInfo']);
if (res.authSetting['scope.userInfo']==undefined) { //NO.1-1 未授权
wx.authorize({
scope: 'scope.userInfo',
success() {
//用户已经同意小程序使用用户信息,后续调用 wx.getUserInfo 接口不会弹窗询问
wx.getUserInfo();
resolve(res);
}
});
} else if (res.authSetting['scope.userInfo'] ==false){//NO1-2 拒绝授权
wx.openSetting({
success: function (data) {
resolve(data);
},
fail: function (data) {
reject(data);
}
});
}
}
});
}).then(
function(data){//授权成功,重载onload方法来更新用户信息
that.onLoad();
},
function(data){//授权失败执行代码
//提示未授权可能造成的一些影响
console.log(data);
});
}
点击允许后的效果
(1)开发者工具中,授权后重载onload,页面可以获取到用户信息
(2)但是,在手机中预览,无法获取数据。
我再补充下:onload的方法内容:
onLoad: function (options) {
var that = this;
app.getUserInfo(function (userInfo) {//获取微信用户信息
that.setData({
userInfo: userInfo,
userAccount:app.globalData.userAccount
})
});
}
主要是通过调用全部变量中的getUserInfo方法来获取用户信息 ,并赋值给当前页面的userInfo变量