對于授權有三(san)種情(qing)況:
1.用(yong)戶第一(yi)次使用(yong),彈出授權。
2.用(yong)戶已(yi)經拒絕過授權(quan)。
3.用戶已經授權過。
正確的邏輯處理是:
(1)獲(huo)取(qu)用(yong)戶授(shou)權的(de)信息
(2)判斷scope.writePhotosAlbum的(de)值,若(ruo)為(wei)(wei)true則已經授權(quan)(quan)(quan),直接調(diao)用(yong)保存(cun)到(dao)(dao)相冊(ce)的(de)方法;若(ruo)為(wei)(wei)undefined,則說明是(shi)第(di)(di)一(yi)次授權(quan)(quan)(quan),需(xu)要調(diao)用(yong)wx.authorize彈(dan)(dan)出(chu)授權(quan)(quan)(quan)框(kuang),授權(quan)(quan)(quan)框(kuang)只在第(di)(di)一(yi)次詢問時彈(dan)(dan)出(chu),如(ru)果用(yong)戶(hu)已經拒絕(jue)了,則不會彈(dan)(dan)出(chu)。因此我(wo)們需(xu)要對(dui)undefined情況(kuang)進行(xing)(xing)判斷。若(ruo)為(wei)(wei)false,則已經拒絕(jue)了授權(quan)(quan)(quan),這時候我(wo)們需(xu)要調(diao)用(yong)wx.openSetting引導用(yong)戶(hu)打開設置,保存(cun)到(dao)(dao)相冊(ce),wx.openSetting設置界面只會出(chu)現小程(cheng)序已經向用(yong)戶(hu)請求過的(de)權(quan)(quan)(quan)限(xian),正因為(wei)(wei)wx.authorize和wx.openSetting的(de)使用(yong)場景限(xian)制,我(wo)們才需(xu)要考(kao)慮這兩(liang)種case一(yi)起使用(yong)才行(xing)(xing),缺(que)一(yi)不可(ke)。
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: '您沒有授權,無法保存到相冊',
icon: 'none'
})
}
})
}else {
wx.openSetting({
success(res) {
if (res.authSetting['scope.writePhotosAlbum']) {
_this.saveImg();
}else{
wx.showToast({
title:'您沒有授權,無法保存到相冊',
icon:'none'
})
_this.setData({ isSaving: false });
}
}
})
}
}
})