一、问题描述
有过微信小程序开发经历的应该会知道,小程序的部分接口需要用户授权同意才能调用,初次使用时小程序会有弹窗询问用户,但是一旦用户拒绝授权,那么下次点击时将不会出现弹窗询问。没有弹窗询问,该如何重新获取用户授权呢?下面以访问本地相册授权为例,介绍两类重新获取用户授权的方法。
二、微信用户的解决方案
1. 方法一:删除微信小程序后重新搜索进入该小程序。
微信小程序授权的有效期(一旦用户明确同意或拒绝过授权,其授权关系会记录在后台,直到用户主动删除小程序。)因此,如果用户主动删除小程序后重新搜索进入,即可再次出现授权的询问弹窗。此时小程序的缓存信息包括所有授权状态都将会被重置。
2.方法二:前往授权设置页面开启授权。
点击小程序右上角的“…”按钮->设置,进入授权设置页面开启授权即可。
三、弹窗提示引导用户开启授权
当监测到用户拒绝授权时,弹出一个提示对话框,当用户点击确定后将自动转跳至授权设置页面,从而实现引导用户开启授权。
四、参考代码
在接口调用失败的fail回调函数中,编写wx.showModal提示框,当用户点击确定时用wx.openSetting()引导用户前往授权设置页面开启授权。
wx.saveImageToPhotosAlbum({
success: function (res) {
if (res.authSetting['scope.writePhotosAlbum']) {
// 已经授权访问本地相册
}
},
fail:function(e){
wx.showModal({
title: '提示',
content: '用户拒绝授权访问本地相册将导致头像无法保存!如需继续操作,请点击确定前往开启授权。',
success: function (res) {
if (res.confirm) {//点击确定后前往授权设置页面
wx.openSetting()
}
}
})
}
})