微信小程序授权教程(二)代码实现

功能:不授权不能正常使用程序

通杀版本只需要在调用时传入相应授权码即可实现小程序授权通杀

界面:上一篇帖子 https://blog.csdn.net/aaron9185/article/details/84101455

代码实现

一、在app.js中插入检测授权状态方法     授权成功则继续  不成功跳转到授权页面

//权限询问界面  需传入 授权名称 权限代码
  getAuthState: function(stateName, stateKey) {
    var that = this
    wx.getSetting({
      success(res) {
        // console.log(stateName)
        // console.log(stateKey)
        // console.log(res)
        if (!res.authSetting[stateKey]) {
          console.log('我是授权未成功')
          var tempData = stateName + 'and' + stateKey
          wx.navigateTo({
            url: '../authorize/authorize?tempData=' + tempData
          })
        } else {
          console.log("我是已经授权成功")
        }
      }
    })
  },

二、授权页面  在授权页面插入授权事件

  // 权限询问
  getRecordAuth: function() {
    var that = this
    console.log('我是授权页面')
    // console.log(that.data.stateName)
    // console.log(that.data.stateKey)
    wx.getSetting({
      success(res) {
        if (!res.authSetting[that.data.stateKey]) {
          wx.authorize({
            scope: that.data.stateKey,
            success() {
              //成功授权 返回上个页面
              console.log("授权" + that.data.stateName + '成功')
              wx.navigateBack({
                delta: 1,
              })
            },
            fail() {
              console.log("授权" + that.data.stateName + '失败')
              //授权失败后进行提醒 并要求手动授权
              that.getAsk(that.data.stateName, that.data.stateKey)
            }
          })
        } else {
          console.log("我是已经授权成功")
        }
      }
    })
  },

  //拒绝授权后再次询问
  getAsk: function(stateName, stateKey) {
    var that = this

    wx.showModal({
      title: '',
      content: '拒绝' + stateName + '授权后将会影响您的体验!是否进行手动授权!',
      showCancel: true,
      success: function(res) {
        if (res.confirm) {
          //点击确认后打开手动设置页面
          wx.openSetting({
            success: (res) => {
              console.log(res.authSetting);
              if (!res.authSetting['scope.record']) {
                //未设置录音授权
                console.log("未设置录音授权");
                wx.showModal({
                  title: '提示',
                  content: '您未进行' + stateName + '授权,功能将无法使用。',
                  showCancel: false,
                  success: function(res) {},
                })
              } else {
                //第二次才成功授权 返回上个页面
                console.log("设置录音授权成功");
                wx.navigateBack({
                  delta: 1,
                })
              }
            },
            fail: function() {
              console.log("授权设置录音失败");
            }
          })

        } else if (res.cancel) {
          //点击取消后 
        }
      }
    })
  },

三、调用   建议在onshow中使用    调用授权是传入相应授权码即可实现授权通杀

const app = getApp()
  
onShow: function() {
    var that = this
    
    //获取授权
    var temp = app.getAuthState("录音", "scope.record")
  },

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值