微信小程序简单实现授权遭拒后弹窗拉取授权(以保存图片到相册授权为例)

文章目录

    • 一、问题描述
    • 二、微信用户的解决方案
    • 三、弹窗提示引导用户开启授权
    • 四、参考代码

一、问题描述

有过微信小程序开发经历的应该会知道,小程序的部分接口需要用户授权同意才能调用,初次使用时小程序会有弹窗询问用户,但是一旦用户拒绝授权,那么下次点击时将不会出现弹窗询问。没有弹窗询问,该如何重新获取用户授权呢?下面以访问本地相册授权为例,介绍两类重新获取用户授权的方法。

二、微信用户的解决方案

1. 方法一:删除微信小程序后重新搜索进入该小程序。
微信小程序授权的有效期(一旦用户明确同意或拒绝过授权,其授权关系会记录在后台,直到用户主动删除小程序。)因此,如果用户主动删除小程序后重新搜索进入,即可再次出现授权的询问弹窗。此时小程序的缓存信息包括所有授权状态都将会被重置。
2.方法二:前往授权设置页面开启授权。
点击小程序右上角的“…”按钮->设置,进入授权设置页面开启授权即可。
微信小程序简单实现授权遭拒后弹窗拉取授权(以保存图片到相册授权为例)_第1张图片微信小程序简单实现授权遭拒后弹窗拉取授权(以保存图片到相册授权为例)_第2张图片

三、弹窗提示引导用户开启授权

当监测到用户拒绝授权时,弹出一个提示对话框,当用户点击确定后将自动转跳至授权设置页面,从而实现引导用户开启授权。
微信小程序简单实现授权遭拒后弹窗拉取授权(以保存图片到相册授权为例)_第3张图片微信小程序简单实现授权遭拒后弹窗拉取授权(以保存图片到相册授权为例)_第4张图片

四、参考代码

在接口调用失败的fail回调函数中,编写wx.showModal提示框,当用户点击确定时用wx.openSetting()引导用户前往授权设置页面开启授权。

wx.saveImageToPhotosAlbum({
                          //已经授权访问本地相册,保存头像到本地
                          filePath: avatarImg.path,
                          success:function(sres){
                            console.log(sres)
                          },
                          fail:function(sres){
                            if (!res.authSetting['scope.writePhotosAlbum']){
                              //未授权访问本地相册,引导用户前往设置
                              wx.showModal({
                                title: '温馨提示',
                                content: '用户拒绝授权访问本地相册将导致头像无法保存!如需继续操作,请点击确定前往开启授权。',
                                success: function (res) {
                                  if (res.confirm) {//点击确定后前往授权设置页面
                                    wx.openSetting()
                                  }
                                }
                              })  
                            }    
                          }
                      })

你可能感兴趣的:(应用开发)