千家信息网

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

发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,这篇文章主要讲解了"微信小程序的权限接口有哪些及怎么用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"微信小程序的权限接口有哪些及怎么用"吧!1、权限接
千家信息网最后更新 2025年02月24日微信小程序的权限接口有哪些及怎么用

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

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代码如下:

获取地理位置{{context}}开始录音

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()接口会出现修改权限的操作界面。

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

接口 用户 权限 函数 程序 订阅 位置 地理 地理位置 状态 成功 属性 消息 界面 代码 版本 类型 最低 功能 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全周开幕新闻视频 活动中心网络安全处置办法 金华数据库实操培训机构 怎么查服务器代理地址 JAVA软件开发工信部证书 sql数据库创建学生信息 代理服务器如何用 肇庆考试软件开发费用是多少 分布式测试网络技术讲解 服务器没有windows键 打电话总显示无法连接到服务器 联想服务器的二维码用什么扫 望城区网络安全管理 网络安全员使用技巧 泰雷兹软件开发 网络安全有互动才叫普法 四川嵌入式软件开发如何收费 虚拟服务器id是什么意思 网页数据库查询系统安全问题 数据库技术与应用的实践研究 网络安全等级保护评测指导书 数据库创建简单的多表查询例题 数据库设计有哪三个流程 初高中网络安全周讲课内容 中级软考数据库设计 外国网络安全排名 鼎信诺数据库客户端取数卡 影视片段少年网吧苦练网络技术 湖北视频会议服务器虚拟主机 惠普服务器870w电源改输出
0