授權(quán)
在用戶第一次請(qǐng)求授權(quán)時(shí),可以彈出授權(quán)框進(jìn)行授權(quán)。如果用戶選擇了拒絕,短期內(nèi)不會(huì)出現(xiàn)彈窗,而是直接進(jìn)入fail。
Taro.authorize({
scope: 'scope.writePhotosAlbum',
}).then(() => {
// 第一次授權(quán)成功會(huì)進(jìn)入這里
}).catch(({ errMsg }) => {
// 第一次拒絕授權(quán),以及拒絕后再次調(diào)用Taro.authorize不會(huì)彈出授權(quán)框,會(huì)直接進(jìn)入這里。
// 第一次拒絕授權(quán)的errMsg是authorize:fail auth deny
// 再次調(diào)用Taro.authorize的errMsg是authorize:fail System error, error code:-12006,auth deny
if (errMsg === 'authorize:fail auth deny') {
Taro.showToast({
title: '保存失敗,請(qǐng)重試',
icon: 'none',
duration: 2000,
})
} else {
this.openSettingToAuthorize()
}
})
在用戶拒絕授權(quán)后,但是功能確實(shí)需要授權(quán)才能工作,就需要用另外的方式讓用戶去授權(quán)。
可以通過Taro.openSetting去打開微信的授權(quán)頁面,讓用戶去授權(quán)。這里要注意的是openSetting要通過tap去觸發(fā)showModal,再在showModal中調(diào)起
openSettingToAuthorize() {
Taro.showModal({
title: '提示',
confirmText: '去授權(quán)',
content: '您沒有權(quán)限,是否去授權(quán)?',
success: ({ confirm }) => {
if (confirm) {
Taro.openSetting({})
} else {
Taro.showToast({
title: '保存失敗,請(qǐng)重試',
icon: 'none',
duration: 2000,
})
}
}
})
}
達(dá)到的效果就是
1、點(diǎn)擊授權(quán),然后點(diǎn)擊“取消”拒絕授權(quán),顯示失敗提示
2、再次點(diǎn)擊授權(quán),此時(shí)因?yàn)榕袛嘤脩粢呀?jīng)拒絕過授權(quán),所以會(huì)去調(diào)用showModal顯示確認(rèn)授權(quán)框
3、此時(shí)點(diǎn)擊”確定“,回去調(diào)用openSetting,打開微信授權(quán)頁面。如果點(diǎn)擊取消就提示失敗。
清空緩存
- ios先通過小程序右上角的設(shè)置清除授權(quán)信息
- 微信->發(fā)現(xiàn)->選擇你的小程序(左滑一下),點(diǎn)擊刪除,重新進(jìn)入小程序就沒有緩存了。
用戶信息
發(fā)布要注意
小程序官方說:為了給用戶提供更好的小程序環(huán)境,我們約定在一段時(shí)間后(具體時(shí)間會(huì)做通知),若還出現(xiàn)以下情況(包括但不限于),將無法通過審核。
- 初次打開小程序就彈框授權(quán)用戶信息【開發(fā)者在首頁直接調(diào)用 wx.getUserInfo 進(jìn)行授權(quán),彈框有會(huì)使得一部分用戶放棄小程序的使用。所以使用組件來獲取用戶信息,用戶拒絕授權(quán)后也可以重新彈窗再次授權(quán)】
- 未處理用戶拒絕授權(quán)的情況
- 強(qiáng)制要求用戶授權(quán)
而以上的限制對(duì)于已經(jīng)上線的小程序不會(huì)受到影響。