在小程序开放的JSAPI接口与TOP API接口中,有部分接口是需要经过用户(消费者或商家)授权同意才能正常调用。我们把这些接口按使用范围分成多个 scopes ,应用按scopes向用户发起授权申请,当用户同意后,应用方可成功调用该scopes对应的接口。
开发者可以使用 my.authorize 在 真正需要使用授权接口时 ,向用户发起授权请求。跟进不同的业务需求,存在以下两种情景。
在【消费者端】(或商家端)调用需要【消费者】(或商家)授权的接口的场景。
必须按需授权申请。传入真正需要的scopes。
示例代码:
my.authorize({ //支持一次最多发起5个scope授权,多个scope以字符组数的方式入参,如 scopes: ['scope.userInfo','scope.location','scope.audioRecord'] scopes: 'scope.userInfo', success: (res) => { //do something }, fail: (res) => { //do something } })
获得授权后,会将生成的用户accessToken存储在客户端中,在端上使用云调用的时候,会将accessToken放入请求上下文中传递到服务端。
在服务端获取该参数的方式参考 文档。
scope |
对应接口 |
授权提示文案 |
scope.userInfo |
获取你的公开信息(用户名、头像等) |
|
scope.addressList |
获取您的收货地址列表 |
|
scope.getPhoneNumber |
获取您淘宝账号绑定的手机号码 |
|
scope.location |
获取用户地理位置信息 |
|
scope.audioRecord |
访问您的录音功能 |
|
scope.addCalendarPlan |
访问您的系统日历 |
|
scope.album |
访问您的本地相册 |
|
scope.camera |
访问您的摄像头 |
|
scope.clipboard |
访问您的剪贴板 |
|
scope.getStepsStatus |
获取您的(历史)步数 |
注: 开发者在调用平台API时候,需要确认API在所在权限包是否正常申请;如果未申请可在【控制台】-【能力管理】-【权限包】列表完成申请。
支持全量授权申请。通过一次用户授权,得到订单、商品等全量的获取的能力。scopes传入参数为"*"。(千牛7.11.60N以上版本支持)
示例代码:
my.authorize({ scopes: '*', success: (res) => { my.alert({ content: res, }); }, });
注意:
① 获取B端授权,必须要创建商家端应用。
② 若出现授权失败或者授权后调用TOP接口依旧报session无效的错误,请先使用my.qn.cleanToken清除授权token后再尝试调用授权接口。
③ 接口调用的几种结果:
a)如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
b)如果用户已授权,可以直接调用接口;
c)如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景。
d)在授权的有效期内,再次调用授权接口可刷新授权有效时间,且不会弹出授权框,自动走成功的回调。
开发者可以使用 my.getSetting 获取用户当前的授权状态。
法务合规要求:用户拒绝授权后,小程序不应直接退出、关闭或拒绝服务。例如位置信息,若用户拒绝授权,宜在产品页面中引导用户再给出位置授权,不得不给权限没法走下去,同时用户拒绝授权后,小程序不应频繁弹窗要求用户授权干扰用户正常使用。
因此当用户点击拒绝/取消按钮或者在多个授权申请时、部分授权勾选部分授权项不勾选(即不同意/允许)的情况下,淘宝小程序不允许开发者针对用户未同意/允许的授权项进行二次弹框申请。开发者可在用户拒绝授权后引导去授权设置页(“···”-设置)开启授权,官方具有浮层引导模块,开发者也可开发升级引导模块。此外,当用户在授权弹框时同意授权并且后续在授权管理页取消授权后,开发者调用my.authorize发起授权时仍可唤起弹窗。
法务合规要求:在申请系统权限弹窗前,应同步告知用户权限申请的业务目的。针对用户授权用途说明,开发者可在控制台【开发设置-scope授权项管理】填写每一个scope授权项用途说明。
开发者可以调用 my.openSetting 打开设置界面,引导用户开启授权。
用户可以在小程序设置界面(「右上角」 - 「授权设置」)中控制对该小程序的授权状态。如下图展示:
授权有效期分为上线前和上线后两种情况:
1)上线前:授权有效期为一天;
尤其是研发商家端应用,预留出一天时间进行授权测试验证;
2)上线后:模板类应用授权有效期同订购周期,其它类型小程序为一个月。
Q&A:授权错误信息文档对照包,自主排查。
参考:授权错误信息对照表。