跳到正文
ArchiveZaunEkko Docs
阅读设置
正文字号
字体
简体中文English
展开文档目录

注册用户授权应用

状态
生效中
更新
2026-08-13
适用范围
API Platform 用户授权应用接入

什么时候使用

用户授权应用适合桌面 Agent、CLI、移动应用,或带服务端的 Web 应用:每个终端用户用自己的 ZaunEkko Account 登录并明确授权,应用随后代表这名用户调用 API Platform。

调用仍属于终端用户:额度、积分扣除、用量和回执都记在用户自己名下。应用不会获得替所有用户统一付费的身份。

如果应用需要无人值守运行、用应用自己的积分支付,请改用应用自付身份。

申请流程

到 API Marketplace 的我的控制台 → 用户授权应用:

  1. 填写显示名称;
  2. 选择 client type;
  3. 填写一个精确的 redirect URI;
  4. 保存草稿并提交审核;
  5. 审核通过后,由 owner 自行激活 client。

审核可能批准,或附带意见退回草稿。批准不会自动签发 Secret,也不会替任何终端用户授权。

两种 Client Type

Web confidential

适合有可信服务端的 Web 应用。激活时会返回 Client ID 和 Client Secret;Secret 明文只出现一次,必须立刻保存到服务端密钥管理器,不能下发浏览器。

使用精确 HTTPS redirect URI。本地开发可以使用 loopback HTTP。

Native public

适合桌面 Agent、CLI 或移动应用。它没有 Client Secret——分发给终端用户的软件无法安全保存共享 Secret。

可以使用 loopback HTTP,或反向域名 private URI scheme。激活后只需保存 Client ID。

固定授权范围

用户授权应用只获得:

openid profile account.read ekko-api.invoke

它不能申请 Provider、Reviewer、Operator、应用自付或平台内部 scope。用户在授权页面看到并同意这些权限后,应用才能得到授权码。

Authorization Code + PKCE

所有用户授权应用都必须使用 authorization code + PKCE,且 code_challenge_method 使用 S256。

授权请求示意:

GET https://account.zaunekko.com/oauth2/authorize
  ?response_type=code
  &client_id={client_id}
  &redirect_uri={exact_redirect_uri}
  &scope=openid%20profile%20account.read%20ekko-api.invoke
  &code_challenge={base64url_sha256_code_verifier}
  &code_challenge_method=S256
  &state={unpredictable_state}

回调时先核对 state,再用同一个精确 redirect URI 和原始 code_verifier 换取 Token。Web confidential client 还需要在服务端完成 client authentication;Native public client 不发送 Secret。

不要把 access token、refresh token、授权码、code verifier 或 Client Secret 放进 URL、日志、浏览器存储或公开代码。

Token 与撤销

Access token 有效期较短。Refresh token 为一次性轮换:刷新成功后,调用方必须原子保存新 refresh token,再丢弃旧值;并发刷新需要由应用串行化。

Owner 可以在 Marketplace 撤销 client。撤销会阻止新的授权与刷新,但不会删除已经发生的调用、积分流水或回执。终端用户也可以撤回对应用的授权。

Redirect URI 规则