本篇文章给大家带来了关于微信小程序的相关问题,其中主要介绍了微信小程序中的权限接口的相关内容,包括了用户授权接口、获取用户权限设置接口、打开用户权限设置接口等内容,下面一起来看一下,希望对大家有帮助。
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.1successfunction否接口调用成功的回调函数failfunction否接口调用失败的回调函数completefunction否接口调用结束的回调函数(调用成功、失败都会执行)
object.success回调函数如下:
属性类型说明最低版本authSettingAuthSetting用户授权结果subscriptionsSettingSubscriptionsSetting用户订阅消息设置,接口参数withSubscriptions值为true时才会返回。2.10.1miniprogramAuthSettingAuthSetting在插件中调用时,当前宿主小程序的用户授权结果
官网示例代码:
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.3successfunction否接口调用成功的回调函数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–><viewclass="body"bindtap="location1">获取地理位置</view><viewclass="body">{{context}}</view><viewclass="body"bindtap="location2">开始录音</view>
Setting.js代码如下:
//index.js//获取应用实例constapp=getApp()Page({data:{},onLoad:function(){context:''},location1:function(){//获取地理位置varthat=thiswx.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(){//录音varthat=thiswx.getSetting({success(res){console.log(res.authSetting)if(!res.authSetting['scope.record']){wx.openSetting({//打开用户权限设置界面success(res){console.log(res)wx.startRecord({//开始录音success(res){consttempFilePath=res.tempFilePathconsole.log("录音结束")}})}})}}})}})
location()1函数实现获取地理位置的功能,该函数先调用wx.getSetting()接口获取权限状态,然后调用wx.authorize()接口修改地理位置权限scope.userLocation。
location2()函数实现录音功能,该函数先调用wx.getSetting()接口获取权限状态,然后调用wx.openSetting()接口打开录音权限设置界面来修改录音权限。
从本例可以看出设置权限的时候应该先调用wx.getSetting()接口来修改权限状态,在没有权限打开的情况下可以调用wx.authorize()接口或者wx.openSetting()接口来修改权限状态,wx.authorize()接口不出现修改权限的操作权限,而wx.openSetting()接口会出现修改权限的操作界面。
案例效果如下:
点击获取地理位置:
点击允许之后会显示当前所在的经纬度。
点击开始录音按钮出现麦克风授权:
产品猿社区致力收录更多优质的商业产品,给服务商以及软件采购客户提供更多优质的软件产品,帮助开发者变现来实现多方共赢;
日常运营的过程中我们难免会遇到各种版权纠纷等问题,如果您在社区内发现有您的产品未经您授权而被用户提供下载或使用,您可按照我们投诉流程处理,点我投诉;
本文来自用户发布投稿,不代表产品猿立场 ;若对此文有疑问或内容有严重错误,可联系平台客服反馈;
部分产品是用户投稿,可能本文没有提供官方下下载地址或教程,若您看到的内容没有下载入口,您可以在我们产品园商城搜索看开发者是否有发布商品;若您是开发者,也诚邀您入驻商城平台发布的产品,地址:点我进入;
如若转载,请注明出处:https://www.chanpinyuan.cn/28552.html;