文档中心 > 店铺动态卡片-开发指引

获取用户授权

更新时间:2024/08/02 访问次数:53265

在小程序开放的JSAPI接口与TOP API接口中,有部分接口是需要经过用户(消费者或商家)授权同意才能正常调用。我们把这些接口按使用范围分成多个 scopes ,应用按scopes向用户发起授权申请,当用户同意后,应用方可成功调用该scopes对应的接口。

 

一、发起授权请求

 

开发者可以使用 my.authorize 在 真正需要使用授权接口时 ,向用户发起授权请求。跟进不同的业务需求,存在以下两种情景。

 

1. 单端内授权情景

 

在【消费者端】(或商家端)调用需要【消费者】(或商家)授权的接口的场景。

 

1) 获取消费者授权

 

必须按需授权申请。传入真正需要的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放入请求上下文中传递到服务端。

在服务端获取该参数的方式参考 文档

 

scopes 列表(持续更新中)

scope

对应接口

授权提示文案

scope.userInfo

my.getAuthUserInfo

获取你的公开信息(用户名、头像等)

scope.addressList

my.tb.chooseAddress

获取您的收货地址列表

scope.getPhoneNumber

taobao.miniapp.user.phone.get

获取您淘宝账号绑定的手机号码

scope.location

my.getLocation

获取用户地理位置信息

scope.audioRecord

RecorderManager.start

访问您的录音功能

scope.addCalendarPlan

my.tb.addCalendarPlan

访问您的系统日历

scope.album

my.chooseImage

my.chooseVideo

my.saveImage

my.saveVideoToPhotosAlbum

访问您的本地相册

scope.camera

camera组件

ar-camera组件

访问您的摄像头

scope.clipboard

my.getClipboard

访问您的剪贴板

scope.getStepsStatus

my.tb.getDailySteps

my.tb.getStepsHistory

获取您的(历史)步数

注: 开发者在调用平台API时候,需要确认API在所在权限包是否正常申请;如果未申请可在【控制台】-【能力管理】-【权限包】列表完成申请。

 

2)获取商家授权

 

支持全量授权申请。通过一次用户授权,得到订单、商品等全量的获取的能力。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)在授权的有效期内,再次调用授权接口可刷新授权有效时间,且不会弹出授权框,自动走成功的回调。

 

2. 获取用户授权设置

 

开发者可以使用 my.getSetting 获取用户当前的授权状态。

 

3. 授权疲劳度控制

 

法务合规要求:用户拒绝授权后,小程序不应直接退出、关闭或拒绝服务。例如位置信息,若用户拒绝授权,宜在产品页面中引导用户再给出位置授权,不得不给权限没法走下去,同时用户拒绝授权后,小程序不应频繁弹窗要求用户授权干扰用户正常使用。

 

因此当用户点击拒绝/取消按钮或者在多个授权申请时、部分授权勾选部分授权项不勾选(即不同意/允许)的情况下,淘宝小程序不允许开发者针对用户未同意/允许的授权项进行二次弹框申请。开发者可在用户拒绝授权后引导去授权设置页(“···”-设置)开启授权,官方具有浮层引导模块,开发者也可开发升级引导模块。此外,当用户在授权弹框时同意授权并且后续在授权管理页取消授权后,开发者调用my.authorize发起授权时仍可唤起弹窗。

 

4. 授权用途说明

 

法务合规要求:在申请系统权限弹窗前,应同步告知用户权限申请的业务目的。针对用户授权用途说明,开发者可在控制台【开发设置-scope授权项管理】填写每一个scope授权项用途说明。

 

二、打开授权设置界面

 

开发者可以调用 my.openSetting 打开设置界面,引导用户开启授权。

用户可以在小程序设置界面(「右上角」 - 「授权设置」)中控制对该小程序的授权状态。如下图展示:

 

image

 

三、授权有效期

 

授权有效期分为上线前和上线后两种情况:

1)上线前:授权有效期为一天;

尤其是研发商家端应用,预留出一天时间进行授权测试验证;

2)上线后:模板类应用授权有效期同订购周期,其它类型小程序为一个月。

 

四、常见问题

 

Q&A:授权错误信息文档对照包,自主排查。

参考:授权错误信息对照表

 

FAQ

关于此文档暂时还没有FAQ
返回
顶部