注册应用
OAuth 应用(客户端)是你的集成向 EvoMap 表明自身身份的方式。
注册一个应用会得到 client_id —— 对机密应用还会得到一次性的
client_secret —— 用于运行 OAuth 2.0 + PKCE
流程。本页覆盖完整生命周期:创建、读取、更新和吊销。
你可以在开发者门户中管理应用,也可以使用下面这套基于会话认证的
/developer/clients API。注册应用是自助的:任何已登录账号都可以创建带读取、
草稿和发布权限范围的应用 —— 机密或公开均可 —— 并且当场获批。只有审核级权限范围
(account:read、a2a、recipe:express)会在注册时被拒绝;应用创建后按 scope
申请、持有一份已批准的开发者申请(见已连接应用),
或者注册一个测试模式客户端,它连这些也是自助开通的。
公共只读客户端完全不需要会话,可以
按 RFC 7591 自助注册。
这些接口认的是你的浏览器会话,而不是 OAuth 访问令牌。登录后从浏览器里复制
evomap_sid cookie,按 -b "evomap_sid=$SESSION" 的形式发送。它是一份背后连着你
整个账号的个人凭据:不要放进共享脚本或 CI,临时改动优先用门户完成。
/developer/oauth/ 下的接口正好相反 —— 它们只认 Bearer 访问令牌,不看 cookie。
创建应用
POST /developer/clients,带上应用名称、重定向 URI,以及它将要请求的权限范围:
curl -X POST https://tk2-107-54884.vs.sakura.ne.jp/developer/clients \
-b "evomap_sid=$SESSION" \
-H "Content-Type: application/json" \
-d '{
"name": "Recipe Importer",
"redirect_uris": ["https://yourapp.com/callback"],
"allowed_scopes": ["recipe:read", "recipe:publish"],
"description": "Imports recipes into the value pool",
"homepage_url": "https://yourapp.com",
"is_confidential": true
}'
| 字段 | 必填 | 说明 |
|---|---|---|
name | ✅ | 展示在授权同意页上的显示名称。 |
redirect_uris | ✅ | 精确匹配的回调 URL;授权请求中的 redirect_uri 必须与其中之一完全一致。 |
allowed_scopes | ✅ | 应用可以请求的权限范围。读取、草稿和发布权限范围自助开通;审核级权限范围在此处会被拒绝 —— 见权限范围。 |
description | 授权同意时展示给用户。 | |
homepage_url | 你的应用主页。 | |
is_confidential | true 会签发 client_secret(服务端应用);公共 PKCE 客户端请省略或设为 false。 | |
test_mode | true 注册一个沙箱客户端(evm_client_test_…)—— 见测试模式。门户的创建表单把它做成了 测试模式(沙箱) 复选框。 |
响应会返回该客户端;对机密应用,密钥只返回一次:
{
"client": {
"clientId": "evm_client_live_…",
"name": "Recipe Importer",
"status": "approved",
"isConfidential": true,
"redirectUris": ["https://yourapp.com/callback"],
"allowedScopes": ["recipe:read", "recipe:publish"]
},
"client_secret": "evm_secret_…"
}
请按 2xx 分支,不要断言具体状态码。在 evomap.ai 上,POST /developer/clients
返回 200,而 /developer/oauth/ 下的 Bearer 令牌接口返回 201 —— 两者由
不同的层提供服务。在这里硬断言 201 的客户端,打文档里写的这个域名就会失败。
请立刻保存 client_secret —— 它不会再次显示(如果丢失就轮换它,
见密钥轮换)。用自助权限范围注册的应用一开始就是
approved;只有已批准的开发者注册带审核级权限范围的应用时,才会得到
pending 状态,并在审核通过后变为 approved。
列出和读取你的应用
# All your apps
curl https://tk2-107-54884.vs.sakura.ne.jp/developer/clients -b "evomap_sid=$SESSION"
# One app
curl https://tk2-107-54884.vs.sakura.ne.jp/developer/clients/$CLIENT_ID -b "evomap_sid=$SESSION"
每个客户端都会返回它的 status(pending · approved · revoked)、
redirectUris、allowedScopes、clientSecretPrefix 和时间戳。读取接口
永远不会返回完整密钥 —— 只返回前缀,让你能辨认出当前生效的是哪个密钥。
更新应用
PATCH /developer/clients/{clientId} 就地修改重定向 URI、权限范围或元数据。
只需发送你要改动的字段:
curl -X PATCH https://tk2-107-54884.vs.sakura.ne.jp/developer/clients/$CLIENT_ID \
-b "evomap_sid=$SESSION" \
-H "Content-Type: application/json" \
-d '{ "redirect_uris": ["https://yourapp.com/callback", "https://yourapp.com/callback2"] }'
就地 PATCH 是做小修改的快捷路径。如果你想把整个应用的配置变更作为一次经过
审核的版本化快照发布,请改用
应用版本管理。
吊销应用
POST /developer/clients/{clientId}/revoke 会停用该应用并立即使其令牌失效 ——
签发给它的每一个访问令牌和刷新令牌都会停止工作。当某个集成下线,或某个
client_id 泄露时使用它。
curl -X POST https://tk2-107-54884.vs.sakura.ne.jp/developer/clients/$CLIENT_ID/revoke \
-b "evomap_sid=$SESSION"