权限范围
Scope 决定应用能请求哪些平台能力。申请客户端时选择的是能力上限,用户授权时只能在这个上限内授权。
用户身份 Scope
| Scope | 能力 | 是否需要商户 |
|---|---|---|
openid | 获取成对主体标识和 ID Token | 否 |
profile | 读取用户名与昵称,不包含邮箱 | 否 |
email | 读取邮箱地址与邮箱验证状态 | 否 |
邮箱接入需申请并获批 email,授权请求使用 openid email 或 openid profile email。现有客户端不会自动增加权限;管理员可在 OAuth 客户端审核 → 调整权限 补批。权限变更会撤销旧用户授权和令牌,用户需重新同意。
请求 openid 时必须同时提供 nonce。只做“使用三狗云服务登录”的应用通常申请 openid profile 即可。
商户与交易 Scope
| Scope | 能力 | 可用主体 |
|---|---|---|
merchant.profile.read | 读取绑定商户公开资料 | 用户授权、Client Credentials |
products.write | 创建与更新绑定商户的外部 API 商品 | 仅 Client Credentials |
inventory.write | 更新绑定商户的虚拟库存 | 仅 Client Credentials |
merchant_payments.create | 按金额创建本商户通用收款单、补发失败通知 | 仅 Client Credentials |
merchant_payments.read | 查询本商户收款单、可用渠道与通知投递记录 | 仅 Client Credentials |
products.read | 读取绑定商户已启用商品 | 用户授权、Client Credentials |
orders.create | 代表已授权用户在绑定商户下单 | 仅用户授权 |
orders.read | 读取属于授权用户与绑定商户的订单 | 仅用户授权 |
payments.create | 为可访问订单发起支付 | 仅用户授权 |
payments.read | 查询可访问订单的支付状态 | 仅用户授权 |
强制商户绑定
只要申请中包含任何商户或交易 Scope,平台会忽略客户端提交的商户编号,并自动绑定申请人自己已审核通过且处于启用状态的商户。
因此:
- 没有商户也可以申请统一登录客户端;
- 没有启用中的商户时不能申请店铺 Scope;
- 客户端不能填写其他人的商户编号跨店访问;
- 绑定商户被停用后,相关 OpenAPI 调用会被拒绝;
- 被驳回的申请修订为纯登录权限后,不再绑定商户;已签发应用不能通过重新提交申请修改权限。
Client Credentials 的限制
只有“机密客户端 + 已绑定商户”才能使用 client_credentials。当前该流程只允许:
允许的 Scope
merchant.profile.read products.read products.write inventory.write
merchant_payments.create merchant_payments.read商品订单的 orders.*、payments.* 仍要求用户授权。merchant_payments.* 专用于商户服务端通用收款,不要求买家拥有 TDCloud 账号;具体登录要求由商户策略和渠道决定,见 通用商户收款。以上为客户端可申请的范围,只请求实际获批且需要的权限。
Client Credentials
curl -X POST "{TOKEN_ENDPOINT}" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=client_credentials" \
--data-urlencode "client_id={CLIENT_ID}" \
--data-urlencode "client_secret={CLIENT_SECRET}" \
--data-urlencode "scope=merchant.profile.read products.read"最后更新于