授权
在用户第一次请求授权时,可以弹出授权框进行授权。如果用户选择了拒绝,短期内不会出现弹窗,而是直接进入fail。
Taro.authorize({
scope: 'scope.writePhotosAlbum',
}).then(() => {
// 第一次授权成功会进入这里
}).catch(({ errMsg }) => {
// 第一次拒绝授权,以及拒绝后再次调用Taro.authorize不会弹出授权框,会直接进入这里。
// 第一次拒绝授权的errMsg是authorize:fail auth deny
// 再次调用Taro.authorize的errMsg是authorize:fail System error, error code:-12006,auth deny
if (errMsg === 'authorize:fail auth deny') {
Taro.showToast({
title: '保存失败,请重试',
icon: 'none',
duration: 2000,
})
} else {
this.openSettingToAuthorize()
}
})
在用户拒绝授权后,但是功能确实需要授权才能工作,就需要用另外的方式让用户去授权。
可以通过Taro.openSetting去打开微信的授权页面,让用户去授权。这里要注意的是openSetting要通过tap去触发showModal,再在showModal中调起
openSettingToAuthorize() {
Taro.showModal({
title: '提示',
confirmText: '去授权',
content: '您没有权限,是否去授权?',
success: ({ confirm }) => {
if (confirm) {
Taro.openSetting({})
} else {
Taro.showToast({
title: '保存失败,请重试',
icon: 'none',
duration: 2000,
})
}
}
})
}
达到的效果就是
1、点击授权,然后点击“取消”拒绝授权,显示失败提示
2、再次点击授权,此时因为判断用户已经拒绝过授权,所以会去调用showModal显示确认授权框
3、此时点击”确定“,回去调用openSetting,打开微信授权页面。如果点击取消就提示失败。
清空缓存
- ios先通过小程序右上角的设置清除授权信息
- 微信->发现->选择你的小程序(左滑一下),点击删除,重新进入小程序就没有缓存了。
用户信息
发布要注意
小程序官方说:为了给用户提供更好的小程序环境,我们约定在一段时间后(具体时间会做通知),若还出现以下情况(包括但不限于),将无法通过审核。
- 初次打开小程序就弹框授权用户信息【开发者在首页直接调用 wx.getUserInfo 进行授权,弹框有会使得一部分用户放弃小程序的使用。所以使用组件来获取用户信息,用户拒绝授权后也可以重新弹窗再次授权】
- 未处理用户拒绝授权的情况
- 强制要求用户授权
而以上的限制对于已经上线的小程序不会受到影响。
网友评论