由于官方将openSetting() API去掉改用手动调用授权登录及授权定位,在首次登录时获取用户授权的状态时使用getSetting,在vivo与OPPO手机上测试时返回状态都为true,在其他手机可以(包括ios);如
wx.getSetting({
success: (res)=>{
console.log(res.authSetting['scope.userLocation']); // true
console.log(res.authSetting['scope.userInfo']); // true
}
})
获取用户当前授权状态时无法判断,求解。。
谢谢...
wx.getSetting({
success: function (res) {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称
wx.getUserInfo({
success: function (res) {
app.globalData.userInfo = res.userInfo
that.setData({
empower: false,
hasUserInfo: true
})
app.globalData.empower = that.data.empower;
console.log(res.userInfo)
}
})
} else {
that.setData({
empower: true //显示自己写的授权按钮
})
app.globalData.empower = that.data.empower;
}
}
})
可以通过判断userInfo是否有值
嗯嗯,我就是用您上面的方法处理的,我的意思是您用vivo手机或者oppo手机测试一下,原因我也说不清楚,其他手机好好的,在手机小程序中删除使用者的记录时,其他手机再次进入时如图(1);而vivo与oppo进入时如图(2)。
我希望您能用手机测试一下,如有麻烦之处请见谅。谢谢。。。。
图一
图二
没有这两款手机,你的意思是删除小程序后再进入,这两款手机还保存有授权信息,其他没有?你在getSetting()打印一下fail,不要光是success
嗯嗯,是。这两款手机还保留授权信息。
不走fail数据,走success和complete,且数据一样。(手机本身会调取到,fail数据不会去触发)
你这种情况很像我当初遇到的,因为wx.getUserInfo这个接口要废弃了,所以需要通过button来引导授权,autoSetting:{}是空对象的原因可能就是没授权,你这样判断看看
if (res.authSetting[ 'scope.userInfo' ] || res.authSetting[ 'scope.userLocation ]) {
}
else{ ‘没有授权’}
不是废弃,搞错了