微信小程序的授權問題
同一個權限,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)
}
})
}