微信小程序的授权问题
同一个权限,wx.authorize第一次授权被拒,第二次调用wx.authorize就没有作用了,会直接走fail的回调。
而且在第一次wx.authorize授权拒绝的情况下,js直接调用wx.openSetting也是无法打开授权页面的。
解决方法是,
在个人中心(或其他任何合适的地方)做一个微信授权管理的菜单,在@tap的事件里调用wx.openSetting可再次成功调起授权页面。
引导用户手机修改微信授权
代码示例
1,调用相机前先检查权限
checkAuth(){ // #ifdef MP-WEIXIN var that = this wx.getSetting({ success (res) {if(!res.authSetting[\'scope.camera\']){ uni.showModal({ title: "提示", content: "请授权使用相机,否则此功能将无法使用", confirmText: "立即授权", cancelText:"暂不授权", success: function (res) { if (res.confirm) { wx.authorize({ scope: \'scope.camera\', success () { // 授权后要执行的代码 }, fail(){
//授权拒绝会走这里 uni.showModal({ title: \'提示\', content: "为了正常使用此功能,请在【个人中心】-【微信权限】中,打开相机权限", confirmText: \'知道了\', showCancel:false, success: res => { } }); return } }) } } }); }else{
//授权后要执行的代码
}
} }) // #endif }
2,手动授权页面
<view class="cu-item arrow" @tap="auth()"> <view class="content"> <text class="cuIcon-settings text-blue"></text> <text class="text-grey">微信权限</text> </view> </view>
auth(){
wx.openSetting({
success (res) {
console.log(res.authSetting)
}
})
}
请发表评论