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 到 Token 端點,換取存取 Token。
  4. 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 都不會授予管理員權限。