温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

微信小程序的权限接口有哪些及怎么用

发布时间:2022-05-16 13:37:09 来源:亿速云 阅读:415 作者:iii 栏目:移动开发

这篇文章主要讲解了“微信小程序的权限接口有哪些及怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序的权限接口有哪些及怎么用”吧!

1、权限接口

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

  • 如果用户未接受或拒绝此权限,会弹窗询问用户,用户单击统一后方可调用接口。

  • 如果用户已授权,可以直接调用接口。

  • 如果用户已拒绝授权,则不会出现弹窗,而会直接进入接口fail回调。

  此类接口再权限中的对象scope的字段和接口的对应关系如下表所示。

scope对应接口描述
scope.userLocationwx.getLocation, wx.chooseLocation, wx.startLocationUpdate地理位置
scope.userLocationBackgroundwx.startLocationUpdateBackground后台定位
scope.recordwx.startRecord, wx.joinVoIPChat, RecorderManager.start麦克风
scope.cameracamera组件, wx.createVKSession摄像头
scope.bluetoothwx.openBluetoothAdapter, wx.createBLEPeripheralServer蓝牙
scope.writePhotosAlbumwx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum添加到相册
scope.addPhoneContactwx.wx.addPhoneContact添加到联系人
scope.addPhoneCalendarwx.addPhoneRepeatCalendar, wx.addPhoneCalendar添加到日历
scope.werunwx.getWeRunData微信运动步数
scope.addresswx.chooseAddress通讯地址(已取消授权,可以直接调用对应接口)
scope.invoiceTitlewx.chooseInvoiceTitle发票抬头(已取消授权,可以直接调用对应接口)
scope.invoicewx.chooseInvoice获取发票(已取消授权,可以直接调用对应接口)
scope.userInfowx.getUserInfo用户信息(小程序已回收,请使用头像昵称填写,小游戏可继续调用)

  小程序提供了三组接口对接口权限进行相应的操作:wx.getSetting()获取用户当前的授权状态;wx.openSetting()打开设置界面以引导用户开启授权;wx.authorize()改变授权状态。

1.1 用户授权接口wx.authorize(Object object)

  提前向用户发起授权请求。该接口调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。属性如下表所示。

属性类型默认值必填说明
scopestring
需要获取权限的 scope,详见 scope 列表
successfunction
接口调用成功的回调函数
failfunction
接口调用失败的回调函数
completefunction
接口调用结束的回调函数(调用成功、失败都会执行)

  官网的示例代码:

// 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.record" 这个 scopewx.getSetting({
  success(res) {
    if (!res.authSetting['scope.record']) {
      wx.authorize({
        scope: 'scope.record',
        success () {
          // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
          wx.startRecord()
        }
      })
    }
  }})

1.2 获取用户权限设置接口wx.getSetting(Object object)

  该接口获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限。属性如下:

属性类型默认值必填说明最低版本
withSubscriptionsBooleanfalse是否同时获取用户订阅消息的订阅状态,默认不获取。注意:withSubscriptions 只返回用户勾选过订阅面板中的“总是保持以上选择,不再询问”的订阅消息。2.10.1
successfunction
接口调用成功的回调函数
failfunction
接口调用失败的回调函数
completefunction
接口调用结束的回调函数(调用成功、失败都会执行)

object.success回调函数如下:

属性类型说明最低版本
authSettingAuthSetting用户授权结果
subscriptionsSettingSubscriptionsSetting用户订阅消息设置,接口参数withSubscriptions值为true时才会返回。2.10.1
miniprogramAuthSettingAuthSetting在插件中调用时,当前宿主小程序的用户授权结果

  官网示例代码:

wx.getSetting({
  success (res) {
    console.log(res.authSetting)
    // res.authSetting = {
    //   "scope.userInfo": true,
    //   "scope.userLocation": true
    // }
  }})

1.3 打开用户权限设置接口wx.openSetting(Object object)

  该接口调用客户端小程序设置界面,返回用户设置的操作结果。设置界面只会出现小程序已经向用户请求过的权限。

属性类型默认值必填说明最低版本
withSubscriptionsBooleanfalse是否同时获取用户订阅消息的订阅状态,默认不获取。注意:withSubscriptions 只返回用户勾选过订阅面板中的“总是保持以上选择,不再询问”的订阅消息。2.10.3
successfunction
接口调用成功的回调函数
failfunction
接口调用失败的回调函数
completefunction
接口调用结束的回调函数(调用成功、失败都会执行)

object.success回调函数如下:

属性类型说明最低版本
authSettingAuthSetting用户授权结果
subscriptionsSettingSubscriptionsSetting用户订阅消息设置,接口参数withSubscriptions值为true时才会返回。2.10.3
  • 注意:2.3.0 版本开始,用户发生点击行为后,才可以跳转打开设置页,管理授权信息。

  官网示例代码:

wx.openSetting({
  success (res) {
    console.log(res.authSetting)
    // res.authSetting = {
    //   "scope.userInfo": true,
    //   "scope.userLocation": true
    // }
  }})

2、授权案例

  本例使用获取地理位置接口wx.getLocation()和开始录音接口wx.startRecord()进行相关操作,而这两个接口都需要设置操作权限。

Setting.wxml代码如下:

<!--index.wxml--><view class="body" bindtap="location1">获取地理位置</view><view  class="body">{{context}}</view><view class="body" bindtap="location2">开始录音</view>

Setting.js代码如下:

//index.js//获取应用实例const app = getApp()Page({
  data: {
   
  },
  
  onLoad: function () {
    context:''
  },
  location1:function(){	//获取地理位置
    var that=this
    wx.getSetting({	//获取用户权限设置接口
      success(res) {
        console.log(res)
        if (!res.authSetting['scope.userLocation']) {
          wx.authorize({		//授权
            scope: 'scope.userLocation',	//地理位置权限,看线上面的scope对应的参数
            success() {
              wx.getLocation({		//获取当前的地理位置
                success: function(res) {
                 console.log(res)
                  that.setData({ context: "你所在的经度是" + res.latitude+"你所在的纬度是"+res.longitude})
                },
              })
            }
          })
        }
      }
    })
  },
 
  location2: function () {			//录音
    var that = this
  
        wx.getSetting({
          success(res) {
            console.log(res.authSetting)
            if (!res.authSetting['scope.record']) {
              wx.openSetting({		//打开用户权限设置界面
                success(res) {
                  console.log(res)
                  wx.startRecord({		//开始录音
                    success(res) {
                      const tempFilePath = res.tempFilePath
                      console.log("录音结束")
                    }
              })
            } 
        })
        }}
        })
  }})

   location()1函数实现获取地理位置的功能,该函数先调用wx.getSetting()接口获取权限状态,然后调用wx.authorize()接口修改地理位置权限scope.userLocation。location2()函数实现录音功能,该函数先调用wx.getSetting()接口获取权限状态,然后调用wx.openSetting()接口打开录音权限设置界面来修改录音权限。从本例可以看出设置权限的时候应该先调用wx.getSetting()接口来修改权限状态,在没有权限打开的情况下可以调用wx.authorize()接口或者wx.openSetting()接口来修改权限状态,wx.authorize()接口不出现修改权限的操作权限,而wx.openSetting()接口会出现修改权限的操作界面。

感谢各位的阅读,以上就是“微信小程序的权限接口有哪些及怎么用”的内容了,经过本文的学习后,相信大家对微信小程序的权限接口有哪些及怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI