uni-app:授权(以微信小程序为例)
说明
个人使用环境说明
- 设备环境:win10 64bit
- 编译环境:HBuilder X
- 运行环境 :微信开发者工具、真机
其他说明
- 在微信小程序中,在调试模式、开发者模式中,调用用户信息默认失败。发布后,可以根据实际用户授权返回授权的结果。
- 由于如果用户之前拒绝过授权,此接口会直接调用师表回调。一般搭配
uni.getSetting(获取当前用户授权)和uni.openSetting(打开授权)使用。 - APP的授权判断方式见https://ext.dcloud.net.cn/plugin?id=594。
- 地理位置权限需要在manifest.json 配置 permission,详见https://uniapp.dcloud.io/collocation/manifest。
- 本人在测试该接口时,引用了ColorUI的样式
调用
调用方法
uni.authorize(OBJECT)
功能
提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。如果用户之前拒绝了授权,此接口会直接进入失败回调,一般搭配uni.getSetting和uni.openSetting使用。
平台差异
|
App |
H5 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节跳动小程序 |
QQ小程序 |
|
× |
× |
√ |
× |
√ |
√ |
√ |
Object参数
|
参数 |
类型 |
必填 |
说明 |
|
scope |
String |
是 |
需要获取权限的 scope,详见 scope 列表。 |
|
success |
Function |
否 |
接口调用成功的回调函数 |
|
fail |
Function |
否 |
接口调用失败的回调函数 |
|
complete |
Function |
否 |
接口调用结束的回调函数(调用成功、失败都会执行) |
scope列表
|
scope |
对应接口 |
描述 |
地理位置 |
|
scope.userInfo |
uni.getUserInfo |
用户信息 |
|
|
scope.userLocation |
uni.getLocation, uni.chooseLocation |
地理位置 |
|
|
scope.userLocationBackground |
wx.userLocationBackground |
后台定位 |
微信小程序 |
|
scope.address |
uni.chooseAddress |
通信地址 |
|
|
scope.record |
uni.getRecorderManager |
录音功能 |
|
|
scope.writePhotosAlbum |
uni.saveImageToPhotosAlbum, uni.saveVideoToPhotosAlbum |
保存到相册 |
字节跳动小程序的返回值是scope.album |
|
scope.camera |
|
摄像头 |
|
|
scope.invoice |
wx.chooseInvoice |
获取发票 |
微信小程序、QQ小程序 |
|
scope.invoiceTitle |
uni.chooseInvoiceTitle |
发票抬头 |
微信小程序、百度小程序、QQ小程序 |
|
scope.werun |
wx.getWeRunData |
微信运动步数 |
微信小程序 |
示例代码
1 uni.authorize({ 2 scope: 'scope.userLocation', 3 success() { 4 uni.getLocation() 5 } 6 })
个人代码
打开授权设置页
授权获取失败时,根据用户选择,打开授权设置页。
1 // 打开授权设置页 : authouName: 授权名称 2 openSetting(authouName) { 3 uni.showModal({ 4 title: '授权', 5 content: '获取授权' + authouName + '失败,是否前往授权设置?', 6 success: function(result) { 7 if (result.confirm) { 8 uni.openSetting(); 9 } 10 }, 11 fail: function() { 12 uni.showToast({ 13 title: '系统错误!', 14 icon: 'none' 15 }); 16 } 17 }) 18 }
配置授权
由于申请位置接口,需要在maifest.json在小程序特有相关中配置权限。以微信小程序为列,使用HBuilder X 打开项目的配置文件。点击【微信小程序配置】→微信小程序权限的【位置】接口,并填写权限申请原因。
1 /* 小程序特有相关 */ 2 "mp-weixin": { 3 "appid": "小程序appid", 4 "setting": { 5 "urlCheck": false 6 }, 7 "usingComponents": true, 8 "permission": { 9 "scope.userLocation": { 10 "desc": "小程序位置接口的效果展示" 11 } 12 } 13 },
页面代码
authorize.vue页面代码如下:
1 23 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 203 204
参考网址
uni-app官网授权:https://uniapp.dcloud.io/api/other/authorize
uni-app 官网配置:https://uniapp.dcloud.io/collocation/manifest?id=mp-weixin
微信小程序权限配置:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#permission