【小程序】拒绝授权引导设置案例

2,062 阅读1分钟

使用微信的开放接口

遇到用户拒绝授权的情况,

这里在小程序里怎么处理才能让用户有好的体验呢?

微信小程序提供了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')
      }
    })
  }
})