开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
基础 api
基础
应用级事件
界面
跳转
多媒体
缓存
文件
位置
网络
设备
系统信息
网络状态
截屏
剪贴板
摇一摇
振动
加速度计
陀螺仪
罗盘
设备方向
拨打电话
获取服务器时间
用户截屏事件
屏幕亮度
设置
添加手机联系人
无障碍
权限引导
扫码
内存不足告警
获取设备电量
蓝牙
wi-fi
短信
worker
数据安全
分享
收藏
自定义通用菜单
更新管理
web-view组件控制
升级支付宝最新版本
隐私信息授权
小程序广告
开放能力 api
开发 > api > 基础 api > 设备 > 设置 > my.getsetting
评论
收藏
我的文档
设置

my.getsetting(object object)

基础库  或更高版本; 且 支付宝客户端 10.1.10 或更高版本; 若版本较低,建议采取 兼容处理

支小宝客户端 支持

安诊儿客户端 支持

以 promise 风格调用: 支持 。

主体: 企业支付宝小程序个人支付宝小程序

获取用户对当前小程序的授权状态。

小程序调用设备或者隐私信息相关的 api(如 my.getlocation、my.chooseimage)时,支付宝会弹出授权提示框,由用户决定是否授权给当前小程序。api 调用之后,相关权限的授权状态,用户可在小程序设置界面板中查看和更改,开发者则可通过 my.getsetting 获取。

这些需要授权的 api 的成功调用,往往需要用户在两个层次上完成授权:1,在支付宝内授权给小程序;2,在系统级别开启对应功能并授权给支付宝。两层授权状态相互独立,前者可通过 my.getsetting 获取,后者则需通过 my.getsysteminfo 获取。

小程序授权相关的逻辑

在用户未对小程序授权的情况下,调用需要权限的 api,客户端会向用户弹出授权提示框:

  • 如果用户同意,api 的主体逻辑将会执行,且后续该 api 调用时不会再弹出授权提示;
  • 如果用户拒绝,将直接触发 api 的 fail 回调,错误码一般为 2001(目前未完全统一,请以具体 api 文档为准);如果用户在拒绝时勾选了“保持以上选择不再询问”,则 fail 回调错误码为 2003,且后续对该 api 的调用将直接失败(错误码为 2002),直到用户在小程序设置中重新开启此项权限。

用户在小程序设置中关闭某项授权后,再次调用相应 api 也会重新弹出授权提示;用户从“我的小程序”中删除当前小程序,等效于在小程序设置中关闭 my.getsetting 所包含的所有授权项。

对于因用户未授权给小程序而导致 api 调用失败、影响小程序正常使用的情况,建议给予用户恰当的引导说明,并在必要时调用 my.opensetting 打开小程序设置界面以便用户开启相关授权。

系统级权限相关的逻辑

如果某个 api 所需的特定权限用户并未在系统中开启,或者未授权给支付宝,那么即使用户同意将该权限授权给当前小程序,api 的调用仍会失败。一般来说,小程序对该 api 的首次调用也会触支付宝向系统申请权限,用户会看到相应的授权提示或者引导界面;用户拒绝以后的重复 api 调用或者永久拒绝情况下的 api 调用,则可能直接触发 fail 回调(错误码请参考具体 api 文档),用户将不会自动获得提示。开发者可通过 my.getsysteminfo 提前查询系统级授权情况,以区分这两种情况;针对后一种情况,可根据 api 回调信息或者再次调用 getsysteminfo 获取详情(例如 locationenabled 为 false 表示手机未开启定位,locationauthorized 为 false 表示用户未授予定位权限给支付宝),并采取恰当处理,如通过调用 my.showauthguide 主动唤起授权引导。

小程序设置中的其他项

my.getsetting 能够获取的授权状态的范围与小程序设置界面中的大部分选项对应,包括各种设备权限,也包括部分用户信息(收货地址、会员基础信息、手机号等),详情参见后文 success 回调函数。小程序设置界面中有展示、但暂不支持通过 my.getsetting 查询的项目包括:

1,消息管理:即消息订阅状态,请在服务端使用 alipay.open.app.messagetemplate.subscribe.query 查询;

2,用户信息:

  • 通过 my.getauthcode 获取用户授权(如 userid、用户昵称等)的状态,不提供单独的查询接口,开发者在恰当的时机调用 my.getauthcode 并在回调中进行相应处理即可,已授权状态下 my.getauthcode 二次调用不会再有弹框;
  • 其他非常规项目(如刷脸认证等)的授权状态,请参考相关的产品接入文档。

object object

查看示例

属性 类型 默认值 必填 兼容性 描述
withsubscriptions boolean false
支付宝: 10.5.10

是否同时获取用户订阅消息的订阅状态,默认不获取

success function - -

调用成功的回调函数

fail function - -

调用失败的回调函数

complete function - -

调用结束的回调函数(调用成功、失败都会执行)

success 回调函数

参数

object res

查看示例

属性 类型 兼容性 描述
authsetting object -

用户授权结果

属性 类型 描述
location boolean

地理位置。若用户未触发过地理位置授权操作,则该属性不存在
对应接口:my.getlocationmy.ap.getmainselectedcity

album boolean

相册读取。若用户未触发过相册读取授权操作,则该属性不存在
对应接口:my.chooseimagemy.choosevideo

writephotosalbum boolean

相册写入。若用户未触发过相册写入授权操作,则该属性不存在
对应接口:my.saveimagetophotosalbummy.savevideotophotosalbum

camera boolean

摄像头。若用户未触发过摄像头授权操作,则该属性不存在
对应接口:my.scanmy.createcameracontext

alipaysports boolean

运动数据。若用户未触发过运动数据授权操作,则该属性不存在
对应接口:my.getrundata

phonenumber boolean

手机号码。若用户未触发过手机号码授权操作,则该属性不存在
对应接口:my.getphonenumber

aliaddress boolean

收货地址。若用户未触发过收货地址授权操作,则该属性不存在
对应接口:my.getaddress

userinfo boolean

会员基础信息(昵称和头像地址)。若用户未触发过会员基础信息(昵称和头像地址)授权操作,则该属性不存在
对应接口:my.getopenuserinfo

audiorecord boolean

麦克风。若用户未触发过麦克风授权操作,则该属性不存在
对应接口:my.getrecordermanagercameracontext.startrecord

bluetooth boolean

蓝牙。若用户未触发过蓝牙授权操作,则该属性不存在
对应接口:my.connectbledevicemy.openbluetoothadaptermy.getbeacons

clipboard boolean

剪切板。若用户未触发过剪切板授权操作,则该属性不存在
对应接口:my.getclipboard

contact boolean

通讯录信息。若用户未触发过通讯录信息授权操作,则该属性不存在
对应接口:my.choosephonecontactmy.choosealipaycontact

subscriptionssetting object
支付宝: 10.5.10

用户订阅消息设置,接口参数withsubscriptions 值为 true 时才会返回

属性 类型 描述
mainswitch boolean

订阅消息总开关,true 为开启,false 为关闭。当订阅消息总开关关闭时 itemsettings 为 {}

itemsettings object

每一项订阅消息的订阅状态。itemsettings 对象的键为订阅消息的模板 id,值为 'accept'、'reject' 中的其中一种。'accept' 表示用户同意订阅这条消息,'reject' 表示用户拒绝订阅这条消息。

my.getsetting(object object)
success 参数
my.getsetting({
  withsubscriptions: true,
  success: res => {
    const { album = false, location = false } = res.authsetting;
    my.alert({ content: `相册已授权:${album};地理位置已授权:${location}` });
  },
});
{
  "authsetting": {
    "location": true,
    "album": true
  },
  "subscriptionssetting": {
      "itemsettings": {
          "8a28818e60fc4c58a53bbe9bbe8361fe": "accept"
      },
      "mainswitch": true
  }
}

q:通过 my.getauthcode 进行的授权状态,可以通过 my.getsetting 接口查询吗?

a:

暂不支持。开发者在恰当的时机调用 my.getauthcode 并在回调中进行相应处理即可。已授权状态下 my.getauthcode 二次调用不会再有弹框。

q:使用 my.getsetting 查询到 album location 授权为true,调用my.chooseimage my.getlocation 为何仍因为权限问题而失败?

a:

my.getsetting 获取的只是用户在支付宝内对小程序的授权,但在系统级别用户可能关闭了相关功能或者未对支付宝授权。请参考本文 接入准备 部分的相关描述和建议。

凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图