OAuth 2.1

让其他应用的用户用 Bot-Hosting 账号登录,就像“使用 Discord 登录”一样。基于 OAuth 2.1 和 PKCE,任何标准 OAuth 客户端都能使用。

操控你自己的账号时,用 API 密钥。构建要操作他人账号的应用时,用 OAuth,让对方自行登录并授权,而不是粘贴密钥。ChatGPT 等 AI 助手正是通过这套流程连接的。

流程

  1. 01 创建应用 在开发者设置中登记名称和重定向 URI。你会获得一个公开的 client_id,不带客户端密钥。
  2. 02 引导用户授权 携带 PKCE 重定向到 /oauth/authorize。用户登录并批准权限范围。
  3. 03 兑换授权码 用户会带着授权码返回。把它 POST 到令牌端点,换取访问令牌。
  4. 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 令牌都不会授予管理员权限。