對于授權有三種情況:
1.用戶第一次使用,彈出授權。
2.用戶已經拒絕過授權。
3.用戶已經授權過。
正確的邏輯處理是:
(1)獲取用戶授權的信息
(2)判斷scope.writePhotosAlbum的值,若為true則已經授權,直接調用保存到相冊的方法;若為undefined,則說明是第一次授權,需要調用wx.authorize彈出授權框,授權框只在第一次詢問時彈出,如果用戶已經拒絕了,則不會彈出。因此我們需要對undefined情況進行判斷。若為false,則已經拒絕了授權,這時候我們需要調用wx.openSetting引導用戶打開設置,保存到相冊,wx.openSetting設置界面只會出現小程序已經向用戶請求過的權限,正因為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: '您沒有授權,無法保存到相冊', icon: 'none' }) } }) }else { wx.openSetting({ success(res) { if (res.authSetting['scope.writePhotosAlbum']) { _this.saveImg(); }else{ wx.showToast({ title:'您沒有授權,無法保存到相冊', icon:'none' }) _this.setData({ isSaving: false }); } } }) } } })