對于授權(quán)有三種情況:
1.用戶第一次使用,彈出授權(quán)。
2.用戶已經(jīng)拒絕過授權(quán)。
3.用戶已經(jīng)授權(quán)過。
正確的邏輯處理是:
(1)獲取用戶授權(quán)的信息
(2)判斷scope.writePhotosAlbum的值,若為true則已經(jīng)授權(quán),直接調(diào)用保存到相冊的方法;若為undefined,則說明是第一次授權(quán),需要調(diào)用wx.authorize彈出授權(quán)框,授權(quán)框只在第一次詢問時彈出,如果用戶已經(jīng)拒絕了,則不會彈出。因此我們需要對undefined情況進行判斷。若為false,則已經(jīng)拒絕了授權(quán),這時候我們需要調(diào)用wx.openSetting引導(dǎo)用戶打開設(shè)置,保存到相冊,wx.openSetting設(shè)置界面只會出現(xiàn)小程序已經(jīng)向用戶請求過的權(quán)限,正因為wx.authorize和wx.openSetting的使用場景限制,我們才需要考慮這兩種case一起使用才行,缺一不可。
wx.getSetting({
success(res) {
if (res.authSetting['scope.writePhotosAlbum']) {
_this.saveImg();
} else if (res.authSetting['scope.writePhotosAlbum'] === undefined) {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success() {
_this.saveImg();
},
fail(){
wx.showToast({
title: '您沒有授權(quán),無法保存到相冊',
icon: 'none'
})
}
})
}else {
wx.openSetting({
success(res) {
if (res.authSetting['scope.writePhotosAlbum']) {
_this.saveImg();
}else{
wx.showToast({
title:'您沒有授權(quán),無法保存到相冊',
icon:'none'
})
_this.setData({ isSaving: false });
}
}
})
}
}
})