小程序相冊授權(quán)

生成海報(bào)保存到手機(jī)相冊,
用戶拒絕后就無法再次使用未授權(quán)時(shí)彈出的授權(quán)頁面,

遇到的問題:
觸發(fā)openSetting需要通過tap的調(diào)用

  1. 通過button來調(diào)用
  2. 則是通過點(diǎn)擊showModal的回調(diào)來調(diào)用openSetting, 主要講通過showModal這種方式

我用的是taro框架,所以一開始在程序中Promise 的來處理回調(diào),報(bào)錯(cuò):openSetting:fail can only be invoked by user TAP gesture. (官方回答:不能使用promise的方式去處理回調(diào),需要改成直接普通的回調(diào)方式, promise是異步的,“點(diǎn)擊行為允許調(diào)用”這個(gè)機(jī)制要求是同步的)

Taro.getSetting().then((res)=>{
    console.log(res)
    // 假如用戶未授權(quán),則彈出授權(quán)框讓用戶選擇
    if(!res.authSetting['scope.writePhotosAlbum']){
       Taro.authorize({
           scope:'scope.writePhotosAlbum'
       }).then(()=>{
          // 授權(quán)成功,則執(zhí)行生成海報(bào)的程序
       }).catch((err)=>{
             // 如果用戶拒絕了授權(quán),則彈出提示框提示用戶,用戶點(diǎn)擊彈出框確認(rèn)按鈕,則通過Taro.openSetting去重新授權(quán)相冊
             console.log(err)
             // 拒絕后,錯(cuò)誤提示有這幾種,看別人都做if判斷,我這邊就不錯(cuò)判斷
             // err.errMsg == 'authorize:fail:auth deny' 這種是android上返回的(vivo)
             // err.errMsg == 'authorize:fail auth deny' 這種是ios上第一次拒絕后返回的,還有開發(fā)者工具上也是返回這種
             // err.errMsg == 'authorize:fail authorize no response' 這種是ios拒絕后,用戶再次點(diǎn)擊后返回的信息
             Taro.showModal({
                 title:'提示',
                 content: '若不微信授權(quán),則無法使用保存圖片或視頻到您的相冊',
                 success: s=>{
                    Taro.openSetting({
                         success(settingdata) {
                         if (settingdata.authSetting['scope.writePhotosAlbum']) {
                            // 重新授權(quán)成功,則執(zhí)行生成海報(bào)的程序
                         }else {
                            // 用戶再次拒絕授權(quán),則提示用戶
                              Taro.showToast({
                                title: '獲取權(quán)限失敗,無法使用保存圖片或視頻到您的相冊',
                                icon: 'none'
                              })
                            }
                          }
                        })
                      }
                    })
                  })
              }else{
                  console.log("b")
                  that.createImg(user);
              }
              that.setState({
                  isCanvas: true   
              })
         })
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容