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 
 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