uniapp小程序之微信授权拒绝的处理方式

微信小程序的授权问题

同一个权限,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)
        }
    })
}