小程序保存图片拒绝授权后,重新发起授权

写小程序时,用到授权时,有些用户可能好奇心重,总会出其不意的乱点,若是程序员没有考虑到,那这时BUG就出现了~~作为前端开发的我心累呀~


下面举一个例子:   保存图片到相册时,点击按钮“保存”,之后会现出来一个微信小程序自带的弹窗----询问用户是否要保存。你说既然先点了保存那就是确定要保存了嘛。但是弹窗中有一个选项“拒绝”,我X,一大批脏话脱口而出!!!!!!!!!!!!


正常情况下,点了“拒绝”后,完了,完了,完了!!!!弹窗关闭,之后若是再次点击“保存”按钮,没反应了。好焦急,好难受。


这时,重新授权就需要用到了:


wx.openSetting({   })
 
TMMD,我以为这样就ok了。哪知道我又遇到了问题。重新授权代码完成后,开发工具上是能够重授权了,哪知道我手机真机测试时,一点反应都没有,而且还没有报错。把我那个焦急的呀。怎么办呢,不修复了?就这样?这怎么可能,若真这样,客户发现问题后不就会天天呼我,修复BUG。那咋行。
 
现在我把我的代码弄下来,记录起来,可能会帮到跟我遇到同样问题的小同伴。也能帮我做个记录。
1.开发工具上的代码(ok)


wx.saveImageToPhotosAlbum({
     filePath: canvasImg,
     success: function (res) {
           wx.showToast({
                title: '保存成功',
                image: "../images/nologo.png",
                duration: 1500,
           })
    },
    fail: function (res) {
           console.log(res)
           if (res.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
                     console.log("打开设置窗口");
                     wx.openSetting({
                               success(settingdata) {
                                        console.log(settingdata)
                                       if (settingdata.authSetting["scope.writePhotosAlbum"]) {
                                                 console.log("获取权限成功,再次点击图片保存到相册")
                                       } else {
                                                 console.log("获取权限失败")
                                       }
                               }
                      })
             }
})

 
2.下面的代码是真机上成功运行的(ok)

   wx.saveImageToPhotosAlbum({
             filePath: canvasImg,
              success: function (res) {
                    wx.showToast({
                           title: '保存成功',
                           image: "../images/nologo.png",
                           duration: 1500,
                     })
                },
               fail: function (res) {
                     console.log(res)
                     if (res.errMsg === "saveImageToPhotosAlbum:fail:auth denied") {
                               console.log("打开设置窗口");
                               wx.openSetting({
                                         success(settingdata) {
                                                console.log(settingdata)
                                                if (settingdata.authSetting["scope.writePhotosAlbum"]) {
                                                                console.log("获取权限成功,再次点击图片保存到相册")
                                                } else {
                                                                 console.log("获取权限失败")
                                                }
                                           }
                                })
                     }
             }
 })

有话要说