【微信小程序】再次授权地理位置getLocation+openSetting使用
最近公司做了一些有关微信小程序的项目,涉及到授权获取用户基本信息,但是在拒绝授权之后就不会再出现授权窗口;
看网上也有很多人遇到了同样的问题,所以记录下来我的处理方法,供大家和自己学习和记录:
当调用小程序 wx.getUserInfo(OBJECT) 获取用户基本信息时,需要用户进行授权操作,如果用户点击了拒绝,则再次调用该方法就不会出现对应的授权窗口,很是让人困惑;
找了许久,最后让我发现了它:------> wx.openSetting(OBJECT),下面让我们认识一下:
wx.openSetting(OBJECT)
设置:调起客户端小程序设置界面,返回用户设置的操作结果;基础库 1.1.0 开始支持,低版本需做“兼容处理”
通过该方法可继续进行授权操作,不多做解释,直接上代码:
onLoad: function (options) {
console.log("onLoad=====");
var that=this;
wx.getUserInfo({
success:function(res){
var userInfo = res.userInfo;
that.setData({
nickName: userInfo.nickName,
avatarUrl: userInfo.avatarUrl,
})
},fail:function(){
wx.showModal({
title: '警告',
content: '您点击了拒绝授权,将无法正常显示个人信息,点击确定重新获取授权。',
success:function(res){
if (res.confirm){
//重点:从这里开始就是重新授权调取
wx.openSetting({
success: (res) => {
if (res.authSetting["scope.userInfo"]){ //如果用户重新同意了授权登录scope.userLocation是表示位置授权 true/false
wx.getUserInfo({
success:function(res){
var userInfo = res.userInfo;
that.setData({
nickName:userInfo.nickName,
avatarUrl:userInfo.avatarUrl,
})
}
})
}
},fail:function(res){
}
})
//重点:调取结束
}
}
})
}, complete: function (res){
}
})
}