微信小程序检测授权权限

在日常开发中常常碰见这种需要,用户使用的某个功能需要申请权限。我们需要提前将权限申请好,以便用户正常使用功能,当第一次进行权限判断的时候有几种情况:
1、用户第一次进入需要给予权限提示
2、用户第二次进去时不管上次是否允许权限都不再进行提示
3、用户在点击需要使用权限的功能时候进去到权限设置页引导用户去设置权限。
以下是相关逻辑判断代码:

//这里以获取用户地址作为权限获取判断
  checkAuth: function() {
    wx.getSetting({
      success(res) {
        console.log(res)
        var authMap = res.authSetting;
        var length = Object.keys(authMap).length;
        console.log("长度:" + length)
        var isAuthAddress = 0; //是否授权通过,有三种情况,0:从未授权,1:授权成功,2:授权失败
        // if ('scope.address' in authMap) {
        if (authMap.hasOwnProperty('scope.address')){
          if (authMap['scope.address']) { //已经授权成功
            isAuthAddress = 1
          } else { //授权拒绝
            isAuthAddress = 2
          }
        } else { //没有授权过
        }
        if (isAuthAddress == 0) {
          wx.authorize({
            scope: 'scope.address',
            success() {
              wx.showToast({
                title: '授权成功'
              })
            },
            fail(e) {
              wx.showToast({
                title: '授权失败'
              })
            }
          })
        }
      }
    })
  }

在用户使用需要权限的功能时候进行进一步的判断,相关代码如下:

  goAddressListener: function() {
    var that = this;//这里需要将this赋值给that,负责在回调里面使用的this是全局的this,概念类似于java内部类的this和类的this
    wx.getSetting({
      success(res) {
        console.log(res.authSetting)
        if (res.authSetting["scope.address"]) {
          console.log("拥有授权");
          //that.getAddress(); //授权成功后这里需要再点击一下才能获取地址
        } else {
          wx.openSetting({
            success(res) {
              console.log("授权成功")
            },
            fail(e) {
              console.log("授权失败")
            }
          })
        }
      }
    })
  }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值