Uniapp – API使用说明 – 授权操作
授权操作
uni.authorize(OBJECT)
提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。如果用户之前拒绝了授权,此接口会直接进入失败回调,一般搭配uni.getSetting
和uni.openSetting
使用。
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 | <camera /> 组件,头条下的扫码、拍照、选择相册 |
摄像头 | |
scope.invoice | wx.chooseInvoice | 获取发票 | 微信小程序、QQ小程序 |
scope.invoiceTitle | uni.chooseInvoiceTitle | 发票抬头 | 微信小程序、百度小程序、QQ小程序 |
scope.werun | wx.getWeRunData | 微信运动步数 | 微信小程序 |
注意:scope.userLocation 权限需要在 manifest.json 配置 permission, 详见:https://uniapp.dcloud.io/collocation/manifest
uni.authorize({
scope: 'scope.userLocation',
success() {
uni.getLocation()
}
})
uni.openSetting(OBJECT)
调起客户端小程序设置界面,返回用户设置的操作结果。
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success 返回参数
属性 | 类型 | 说明 |
---|---|---|
authSetting | Object | 用户授权结果,其中 key 为 scope 值,value 为 Boolean 值,表示用户是否允许授权 |
uni.openSetting({
success(res) {
console.log(res.authSetting)
}
});
uni.getSetting(OBJECT)
获取用户的当前设置。
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
withSubscriptions | Boolean | false | 否 | 是否同时获取用户订阅消息的订阅状态,默认不获取。注意:withSubscriptions 只返回用户勾选过订阅面板中的“总是保持以上选择,不再询问”的订阅消息。 (微信小程序 2.10.1 支持) |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success 返回参数
属性 | 类型 | 说明 |
---|---|---|
authSetting | Object | 用户授权结果,其中 key 为 scope 值,value 为 Boolean 值,表示用户是否允许授权 |
subscriptionsSetting | SubscriptionsSetting | 用户订阅消息设置,接口参数withSubscriptions 值为true 时才会返回。(微信小程序 2.10.1 支持) |
uni.getSetting({
success(res) {
console.log(res.authSetting)
}
})
收货地址
uni.chooseAddress(OBJECT)
获取用户收货地址。调起用户编辑收货地址原生界面,并在编辑完成后返回用户选择的地址,需要用户授权 scope.address。
OBJECT参数说明
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success返回参数说明
属性 | 类型 | 说明 | 平台差异说明 |
---|---|---|---|
userName | string | 收货人姓名 | |
postalCode | string | 邮编 | |
provinceName | string | 国标收货地址第一级地址 | |
cityName | string | 国标收货地址第二级地址 | |
countyName | string | 国标收货地址第三级地址 | |
streetName | string | 国标收货地址第四级地址 | 微信小程序 |
detailInfo | string | 详细收货地址信息 | |
detailInfoNew | string | 新选择器详细收货地址信息 | 微信小程序 |
nationalCode | string | 收货地址国家码 | |
telNumber | string | 收货人手机号码 | |
errMsg | string | 错误信息 | 微信小程序 |
uni.chooseAddress({
success(res) {
console.log(res.userName)
console.log(res.postalCode)
console.log(res.provinceName)
console.log(res.cityName)
console.log(res.countyName)
console.log(res.detailInfo)
console.log(res.nationalCode)
console.log(res.telNumber)
}
})
获取发票抬头
uni.chooseInvoiceTitle(OBJECT)
选择用户的发票抬头,需要用户授权 scope.invoiceTitle。
在微信小程序中,当前小程序必须关联一个公众号,且这个公众号是完成了微信认证的,才能调用 chooseInvoiceTitle。
OBJECT参数说明
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success返回参数说明
属性 | 类型 | 说明 | 平台差异说明 |
---|---|---|---|
type | string | 抬头类型(0:单位,1:个人) | |
title | string | 抬头名称 | |
taxNumber | string | 抬头税号 | |
companyAddress | string | 单位地址 | |
telephone | string | 手机号码 | |
bankName | string | 银行名称 | |
bankAccount | string | 银行账号 | |
errMsg | string | 错误信息 | 微信小程序 |
uni.chooseInvoiceTitle({
success(res) {
console.log(res.type);
console.log(res.title);
console.log(res.taxNumber);
console.log(res.companyAddress);
console.log(res.telephone);
console.log(res.bankName);
console.log(res.bankAccount);
}
})
小程序跳转
uni.navigateToMiniProgram(OBJECT)
打开另一个小程序。
OBJECT 参数说明
属性 | 类型 | 默认值 | 必填 | 说明 | 平台差异说明 |
---|---|---|---|---|---|
appId | string | 是 | 要打开的小程序 appId(百度小程序则填写App Key) | ||
path | string | 否 | 打开的页面路径,如果为空则打开首页 | ||
extraData | object | 否 | 需要传递给目标小程序的数据,目标小程序可在 App.vue 的 onLaunch 或onShow 中获取到这份数据。 |
||
envVersion | string | release | 否 | 要打开的小程序版本,有效值: develop(开发版),trial(体验版),release(正式版)。仅在当前小程序为开发版或体验版时此参数有效。如果当前小程序是正式版,则打开的小程序必定是正式版。 | 支付宝小程序、微信小程序、抖音小程序 |
success | function | 否 | 接口调用成功的回调函数 | ||
fail | function | 否 | 接口调用失败的回调函数 | ||
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
uni.navigateToMiniProgram({
appId: '',
path: 'pages/index/index?id=123',
extraData: {
'data1': 'test'
},
success(res) {
// 打开成功
}
})
uni.navigateBackMiniProgram(OBJECT)
跳转回上一个小程序,只有当另一个小程序跳转到当前小程序时才会能调用成功。
OBJECT参数说明
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
extraData | Object | 否 | 需要返回给上一个小程序的数据,上一个小程序可在 App.vue 的 onShow 中获取到这份数据 |
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
uni.navigateBackMiniProgram({
extraData: {
'data1': 'test'
},
success(res) {
// 返回成功
}
})
uni.openEmbeddedMiniProgram(OBJECT)
微信小程序跳转小程序(半屏模式)(从微信础库 2.20.1 开始支持)
当小程序需要打开另一个小程序让用户进行快捷操作时,可将要打开的小程序以半屏的形态跳转。
调用流程
- 微信小程序2.23.1以下版本基础库,开发者需要在全局配置
manifest.json
-->mp-weixin
节点下添加embeddedAppIdList
字段并声明需要半屏跳转的小程序,若不配置将切换为普通的小程序跳转小程序。2.23.1及以上版本起无需配置。
{
"mp-weixin" : {
"embeddedAppIdList": ["wxe5f52902cf4de896"]//需要半屏跳转的小程序appid
}
}
- 开发者通过调用uni.openEmbeddedMiniProgram半屏跳转小程序:
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
appId | string | 是 | 要打开的小程序 appId | |
path | string | 否 | 打开的页面路径,如果为空则打开首页。path 中 ? 后面的部分会成为 query,在小程序的App.vue 的 onLaunch 、onShow 和 Page.onLoad 的回调函数中可以获取到 query 数据。对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。详见 |
|
extraData | object | 否 | 需要传递给目标小程序的数据,目标小程序可在 App.vue 的 onLaunch 或onShow 中获取到这份数据。详见 |
|
envVersion | string | release | 否 | 要打开的小程序版本,有效值: develop(开发版),trial(体验版),release(正式版)。仅在当前小程序为开发版或体验版时此参数有效。如果当前小程序是正式版,则打开的小程序必定是正式版。 |
shortLink | string | 否 | 小程序链接,当传递该参数后,可以不传 appId 和 path。链接可以通过【小程序菜单】->【复制链接】获取。 | |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
uni.openEmbeddedMiniProgram({
appId: '',
path: 'pages/index/index?id=123',
extraData: {
'data1': 'test'
},
success(res) {
// 打开成功
}
})
使用限制
2022年3月18日后,使用过程有以下限制,若不符合以下所有条件将被自动切换为普通的小程序跳转小程序,不影响用户使用:
- 被半屏跳转的小程序需要通过来源小程序的调用申请,开发者可在 小程序管理后台「设置」-「第三方设置」-「半屏小程序管理」板块发起申请,最多可以申请10个小程序;
- 微信小程序2.23.1版本以下基础库,被半屏打开的小程序需要在全局配置
manifest.json
-->mp-weixin
节点下添加embeddedAppIdList
字段并声明; - 当前小程序需为竖屏;
- 被半屏跳转的小程序需为非个人主体小程序(不含小游戏)
2022年3月18日前,使用过程有以下限制,若不符合以下所有条件将被自动切换为普通的小程序跳转小程序,不影响用户使用:
- 不能在横屏下打开半屏小程序
- 能打开小游戏
- 跳转目标小程序需符合以下类目,详见小程序文档
账号信息
uni.getAccountInfoSync()
获取当前帐号信息,可以返回小程序的Appid。如果使用了微信小程序的云端插件,还可以返回当前插件Appid、版本号。
返回值
Object
帐号信息
属性 | 类型 | 说明 | 平台差异说明 |
---|---|---|---|
miniProgram | Object | 小程序帐号信息 | |
plugin | Object | 插件帐号信息(仅在插件中调用时包含这一项) | 京东、快手小程序不支持 |
miniProgram 的结构
属性 | 类型 | 说明 | 平台差异说明 |
---|---|---|---|
appId | string | 小程序 appId | |
envVersion | string | 小程序 当前环境版本:develop 开发版、trial 体验版、release 正式版、gray 灰度版(仅支付宝小程序支持) |
京东小程序不支持 |
version | string | 线上小程序版本号(仅在正式版小程序上支持) | 京东小程序不支持 |
plugin 的结构
属性 | 类型 | 说明 |
---|---|---|
appId | string | 插件 appId |
version | string | 插件版本号 |
const accountInfo = uni.getAccountInfoSync();
console.log(accountInfo.miniProgram.appId); // 小程序 appId
console.log(accountInfo.plugin.appId); // 插件 appId
console.log(accountInfo.plugin.version); // 插件版本号, 'a.b.c' 这样的形式
共有 0 条评论