总结整理微信小程序权限界面-小程序开发

首页 2024-07-09 07:48:09

本文主要介绍了微信小程序中权限界面的相关内容,包括用户授权界面、获取用户权限设置界面、打开用户权限设置界面等,为您带来了关于微信小程序的相关问题。让我们一起来看看。我希望这对你有帮助。

【相关学习推荐:小程序学习教程】

1、权限接口

??部分接口只能通过用户授权统一调用。我们根据使用范围将这些接口分为多个scope。用户选择授权scope。授权scope时,可直接使用相应的所有接口。调用此类接口时:

  • 如果用户不接受或拒绝此权限,则弹出窗口询问用户,用户可以在调用接口之前单击统一。
  • 如果用户已经授权,可以直接调用接口。
  • 若用户拒绝授权,则不会出现弹出窗口,而是直接进入接口fail进行回调。

??Scope的字段与接口在此类接口再权限中的对应关系如下表所示。

scope 对应接口 描述 scope.userLocation wx.getLocation, wx.chooseLocation, wx.startLocationUpdate 地理位置 scope.userLocationBackground wx.startLocationUpdateBackground 后台定位 scope.record wx.startRecord, wx.joinVoIPChat, RecorderManager.start 麦克风 scope.camera camera组件, wx.createVKSession 摄像头 scope.bluetooth wx.openBluetoothAdapter, wx.createBLEPeripheralServer 蓝牙 scope.writePhotosAlbum wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum 添加到相册 scope.addPhoneContact wx.wx.addPhoneContact 添加到联系人中 scope.addPhoneCalendar wx.addPhoneRepeatCalendar, wx.addPhoneCalendar 添加到日历 scope.werun wx.getWeRunData 微信运动步数 scope.address wx.chooseAddress 通讯地址(授权已取消,对应接口可直接调用) scope.invoiceTitle wx.chooseInvoiceTitle 发票抬头(已取消授权,对应接口可直接调用) scope.invoice wx.chooseInvoice 获取发票(授权已取消,对应接口可直接调用) scope.userInfo wx.getUserInfo 用户信息(小程序已经回收,请用头像昵称填写,小游戏可以继续调用)

??小程序为接口权限提供了三组接口:wx.getSetting()获取用户当前的授权状态;wx.openSetting()打开界面,引导用户打开授权;wx.authorize()改变授权状态。

1.1 wx,用户授权界面.authorize(Object object)

??提前向用户发出授权请求。接口调用后,会立即弹出窗口,询问用户是否同意授权小程序使用某个功能或获取用户的某些数据,但不会实际调用相应的接口。如果用户之前同意授权,就不会有弹出窗口,直接返回成功。属性如下表所示。

属性 类型 默认值 必填 说明 scope string
是 需要获得权限的 scope,详见 scope 列表 success function
否 接口调用成功的回调函数 fail function
否 接口调用失败的回调函数 complete function
否 接口调用结束的回调函数(调用成功或失败都会执行)

??官网示例代码:

//?可以通过?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)

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

属性 类型 默认值 必填 说明 最低版本 withSubscriptions Boolean false 否 默认不得同时获取用户订阅信息的订阅状态。注:withSubscriptions 只返回订阅面板中“始终保持上述选择,不再询问”的订阅信息。 2.10.1 success function
否 接口调用成功的回调函数
fail function
否 接口调用失败的回调函数
complete function
否 接口调用结束的回调函数(调用成功或失败都会执行)

object.success回调函数如下:

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

??官网示例代码:

wx.getSetting({
??success?(res)?{
????console.log(res.authSetting)
????//?res.authSetting?=?{
????//???"scope.userInfo":?true,
????//???"scope.userLocation":?true
????//?}
??}})
1.3 打开用户权限设置界面wx.openSetting(Object object)

??接口调用客户端小程序设置界面,返回用户设置的操作结果。设置界面只会有小程序已经向用户要求的权限。

属性 类型 默认值 必填 说明 最低版本 withSubscriptions Boolean false 否 默认情况下,是否同时获取用户订阅信息的订阅状态。注:withSubscriptions 只返回订阅面板中“始终保持上述选择,不再询问”的订阅信息。 2.10.3 success function
否 接口调用成功的回调函数
fail function
否 接口调用失败的回调函数
complete function
否 接口调用结束的回调函数(调用成功或失败都会执行)

object.success回调函数如下:

属性 类型 说明 最低版本 authSetting AuthSetting 用户授权结果
subscriptionsSetting SubscriptionsSetting 当接口参数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>获取地理位置</view><view>{{context}}</view><view>开始录音</view>

Setting.js代码如下:

//index.js///获取应用实例consttt?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()修改权限的操作界面将出现在接口中。

??案例效果如下:

??点击获取地理位置:

??点击许可后,显示当前的经纬度。

??麦克风授权点击开始录音按钮:

【相关学习推荐:小程序学习教程】

以上是对微信小程序权限界面的详细总结和整理,请关注其他相关文章!


p