OAuth 2.1
让其他应用的用户用 Bot-Hosting 账号登录,就像“使用 Discord 登录”一样。基于 OAuth 2.1 和 PKCE,任何标准 OAuth 客户端都能使用。
操控你自己的账号时,用 API 密钥。构建要操作他人账号的应用时,用 OAuth,让对方自行登录并授权,而不是粘贴密钥。ChatGPT 等 AI 助手正是通过这套流程连接的。
流程
- 01 创建应用 在开发者设置中登记名称和重定向 URI。你会获得一个公开的 client_id,不带客户端密钥。
- 02 引导用户授权 携带 PKCE 重定向到 /oauth/authorize。用户登录并批准权限范围。
- 03 兑换授权码 用户会带着授权码返回。把它 POST 到令牌端点,换取访问令牌。
- 04 以用户身份调用 API 把令牌作为 Bearer 发送到 /api/v1,并在后台刷新它。
端点
| 端点 | 用途 |
|---|---|
| GET /oauth/authorize | 用户授权页面,在浏览器中打开。 |
| POST /api/oauth/token | 用授权码兑换令牌,或刷新令牌。 |
| POST /api/oauth/register | 动态客户端注册(RFC 7591),可选。 |
| GET /.well-known/oauth-authorization-server | 发现元数据。 |
| GET /.well-known/oauth-protected-resource | 资源元数据,供 MCP 客户端使用。 |
令牌有效期
授权码 10 分钟 一次性使用,与 PKCE 绑定。
访问令牌 7 天 用于 /api/v1 调用的 Bearer。
刷新令牌 30 天 每次使用后轮换。
刷新
每次刷新都会返回新的刷新令牌,并使旧令牌失效:请务必覆盖已保存的那个。如果刷新返回 invalid_grant,请让用户从第 1 步重新开始。
安全
- 在服务器端保存令牌,并与你的用户关联。切勿把它们下发到浏览器或放进公开仓库。
- 用户一旦断开你的应用,令牌会立即撤销。
- 生产环境请使用 https 重定向 URI。本地测试可使用 http。
- 无论批准了哪些权限范围,OAuth 令牌都不会授予管理员权限。