应用申请与配置
客户端代表一个调用三狗云授权服务或 OpenAPI 的应用。开发者需获得邀请并通过应用审核;每个账号最多拥有一个客户端。
申请入口与状态
获得邀请后,从个人菜单进入 开发者申请。审核通过后,在 开发者中心 → 应用接入配置 查看 client_id、客户端类型、已登记回调地址和批准权限。页面同时提供当前客户端的 API Base URL、用户授权地址、令牌端点和用户信息端点。服务地址由平台管理,申请人不填写或自行推导。
| 状态 | 可执行操作 |
|---|---|
| 未提交 | 填写资料并提交 |
| 审核中 | 查看提交资料和审核进度,暂不可修改 |
| 已驳回 | 按审核意见修订并重新提交 |
| 已通过 | 查看已签发配置,机密客户端可生成或轮换密钥 |
已通过的申请不能重复提交。当前不提供已签发客户端的类型、回调地址或权限自助修改入口,配置变更需联系平台处理。
申请字段
以下字段与申请页面及提交资料对应。应用申请使用平台账号登录态,由开发者中心完成。
| 字段 | 类型 | 必填 | 约束 |
|---|---|---|---|
name | string | 是 | 应用名称,去除首尾空白后非空,最多 100 字;在授权页面展示 |
client_type | integer | 是 | 0 公共客户端;1 机密客户端 |
home_url | string | 否 | 应用官网;非空时为绝对 HTTP(S) URL |
description | string | 否 | 应用用途,最多 500 字;在授权页面展示 |
redirect_uris | string[] | 是 | 至少一个有效回调地址;页面每行填写一个 |
scopes | string[] | 是 | 至少一个受支持的权限名称,详见 权限范围 |
商户绑定由平台根据申请权限和账号所属商户确定,无需填写 merchant_no。申请任一商户权限时,账号必须拥有启用中的商户;纯身份权限不绑定商户。
客户端类型
| 类型 | 运行环境 | 令牌端点认证 | 支持的授权方式 |
|---|---|---|---|
公共客户端 0 | 浏览器、移动端、桌面应用等不能安全保存固定密钥的环境 | 提交 client_id,不使用 Secret | 授权码 + PKCE、刷新令牌 |
机密客户端 1 | 有独立后端并可安全保存密钥的服务 | 请求体提交 client_id 和 client_secret | 授权码 + PKCE、刷新令牌;绑定商户后可使用 Client Credentials |
两种类型的用户授权均强制 PKCE。是否使用 HTTPS、是否有独立域名不决定客户端类型,类型由令牌交换位置及密钥保管能力决定。
回调地址
redirect_uri 是接入方实现的授权结果接收端点,例如 https://app.example.com/oauth/callback。它接收授权成功的 code、state,或授权拒绝的 error、state,具体协议见 授权回调。
- 必须为绝对 HTTP(S) URL,不能包含 fragment(
#...)。 - 生产地址必须为 HTTPS;只有
localhost与127.0.0.1允许 HTTP。 - 授权请求必须匹配已登记地址;换码时必须使用本次授权相同的地址。
- 协议、主机、端口、路径、查询参数及末尾斜杠均需一致,不支持通配符。
- 本地与生产回调需分别登记。回调路径由接入方实现,平台不会为应用创建该路由。
服务端收款与支付返回地址
外部系统只需收款时,使用绑定商户的机密客户端申请 merchant_payments.create、merchant_payments.read,按 通用商户收款 获取 Client Credentials 令牌。无需为买家先建立 TDCloud 商品订单。
收款单的 return_url 是支付确认后的业务返回地址,在建单请求中按订单提供;它与登记的 OAuth redirect_uri 分开,不接收授权码,也不作为支付证明。现有应用需由平台补批新增 Scope。
客户端凭据
client_id 是可公开的应用编号。client_secret 用于机密客户端向令牌端点证明应用身份,仅保存在服务端。
机密客户端审核通过后,使用开发者中心的 生成 / 轮换 Client Secret 获取初始密钥。新密钥只显示一次;平台保存不可逆哈希,不能找回原值。
再次生成会使旧 Secret 立即失效,需同步更新服务端配置。Secret 不应进入浏览器构建产物、安装包、公开仓库、URL 或日志。公共客户端不签发 Secret。
Access Token 是用户或客户端访问接口的凭据,Refresh Token 用于延续用户授权;两者均需保密,不能使用 Client ID 或 Secret 替代。具体令牌请求见 OAuth 授权。