微信开发-权限获取

部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范围分成多个 scope ,用户选择对 scope来进行授权,当授权给一个 scope 之后,其对应的所有接口都可以直接使用。

调用接口发起授权

第一次使用某个 scope 下的接口时,会弹窗询问用户,“XXX申请获得以下权限:(权限描述)”。如果用户点击允许,则可获得此 scope 的接口权限。并且接口调用成功,否则接口调用失败。

wx.login({
  success: function () {
    wx.getUserInfo()
  }
})

提前发起授权

如果需要提前发起授权获得用户同意,则可调用 wx.authorize()来提前发起授权。

wx.authorize({
  scope: 'scope.record'
})

处理用户拒绝授权

用户有可能拒绝小程序发起的授权申请,需要处理这种情况。

wx.login({
  success: function () {
    wx.getUserInfo({
      fail: function (res) {
        // iOS 和 Android 对于拒绝授权的回调 errMsg 没有统一,需要做一下兼容处理
        if (res.errMsg.indexOf('auth deny') > -1 ||     res.errMsg.indexOf('auth denied') > -1 ) {
          // 处理用户拒绝授权的情况
        }
      }
    })
  }
})

wx.authorize({
  scope: 'scope.record',
  fail: function (res) {
    // iOS 和 Android 对于拒绝授权的回调 errMsg 没有统一,需要做一下兼容处理
    if (res.errMsg.indexOf('auth deny') > -1 ||     res.errMsg.indexOf('auth denied') > -1 ) {
      // 处理用户拒绝授权的情况
    }    
  }
})

 

获取用户授权设置
通过调用 wx.getSetting() 接口可以获取用户当前的授权处理信息。

wx.getSetting({
  success: function (res) {
    var authSetting = res.authSetting
    if (authSetting['scope.userInfo'] === true) {
      // 用户已授权,可以直接调用相关 API
    } else if (authSetting['scope.userInfo'] === false){
      // 用户已拒绝授权,再调用相关 API 或者 wx.authorize 会失败,需要引导用户到设置页面打开授权开关
    } else {
      // 未询问过用户授权,调用相关 API 或者 wx.authorize 会弹窗询问用户
    }
  }
})

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值