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 到 Token 端點,換取存取 Token。
- 04 以使用者身分呼叫 API 以 Bearer 傳送 Token 到 /api/v1,並在背景更新。
端點
| 端點 | 用途 |
|---|---|
| GET /oauth/authorize | 使用者同意畫面,在瀏覽器中開啟。 |
| POST /api/oauth/token | 以授權碼換取 Token,或更新 Token。 |
| POST /api/oauth/register | 動態用戶端註冊(RFC 7591),選用。 |
| GET /.well-known/oauth-authorization-server | 探索中繼資料。 |
| GET /.well-known/oauth-protected-resource | 資源中繼資料,供 MCP 用戶端使用。 |
Token 效期
授權碼 10 分鐘 僅能使用一次,並綁定 PKCE。
存取 Token 7 天 用於 /api/v1 呼叫的 Bearer。
更新 Token 30 天 每次使用都會輪替。
更新
每次更新都會回傳新的更新 Token 並撤銷舊的:請務必覆寫已儲存的那一個。若更新時回傳 invalid_grant,請讓使用者從步驟 1 重新開始。
安全性
- 將 Token 儲存在伺服器端,並綁定你的使用者。切勿傳送到瀏覽器或公開儲存庫。
- 使用者一中斷你的應用程式連線,Token 就會立即撤銷。
- 正式環境請使用 https 重新導向 URI;本機測試可接受 http。
- 無論核准了哪些權限範圍,OAuth Token 都不會授予管理員權限。