使用微信的开放接口
遇到用户拒绝授权的情况,
这里在小程序里怎么处理才能让用户有好的体验呢?
微信小程序提供了wx.openSetting()这个接口,
可以调出一个页面,
这个页面中会展示小程序已经向用户请求过的权限,
是一个开关按钮,
非常方便用户再次重新授权。
wx.getSetting: 获取用户的当前设置( res.authSetting[scope] 获取授权信息 )。
wx.openSetting: 调起客户端小程序设置界面,返回用户设置的操作结果。
wx.authorize: 提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。但在缓存生效期间只会弹窗一次。
wx.showModal: 检测到未授权时弹窗提示用户。
wx.chooseAddress && wx.chooseInvoiceTitle: 调起响应的用户授权。
app.js
App({
globalData: {},
/**
* 授权
* scope.userInfo wx.getUserInfo 用户信息
scope.userLocation wx.getLocation, wx.chooseLocation 地理位置
scope.address wx.chooseAddress 通讯地址
scope.invoiceTitle wx.chooseInvoiceTitle 发票抬头
scope.werun wx.getWeRunData 微信运动步数
scope.record wx.startRecord 录音功能
scope.writePhotosAlbum wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum 保存到相册
scope.camera 摄像头
*/
checkAuthorize(scope) {
wx.getSetting({
success: (res) => {
console.log(res.authSetting[scope])
if (!res.authSetting[scope]) {
wx.showModal({
title: '用户未授权',
content: '拒绝授权将不能体验小程序完整功能,点击确定开启授权',
success: (res) => {
console.log(res)
if (res.confirm) {
wx.openSetting({})
}
}
})
}
}
})
}
})
const app = getApp();
Page({
testApi() {
wx.chooseAddress({
success: (res) => {
console.log(res)
},
fail: (error) => {
console.log(error);
app.checkAuthorize('scope.address')
}
})
}
})