適合情境:你正在開發一個第三方應用程式 / Agent / MCP 用戶端 / 自動化工作流程,想讓使用者用 Ace Data Cloud 帳號一鍵登入,並依需求存取他在平台上的資源,而不必讓使用者手動複製貼上 API Key。
名詞 & 端點速查
所有端點都在https://auth.acedata.cloud,可透過探索端點(Discovery)隨時取得最新位址:
支援的功能:
response_type=code、grant_types=authorization_code, refresh_token、code_challenge_methods=S256, plain、用戶端驗證方式 client_secret_post(機密用戶端)/ none(PKCE 公開用戶端)。
權限範圍(Scope)
依「最小權限」申請,使用者會在授權頁看到你申請的每一項權限。 身分類(OIDC 相容)
平台資源類
聚合類(自動展開)
特殊
典型組合:第三方「一鍵登入」=openid profile;MCP / IDE 用戶端需要自動設定 Key =openid profile credentials:read credentials:write;完整管理後台 =openid profile email platform offline_access。
第 1 步:註冊一個 OAuth 應用程式
開啟 auth.acedata.cloud/user/oauth-apps →「建立應用程式」,填寫:- 應用程式名稱 / 描述 / Logo:會顯示在使用者的授權同意頁。
- 用戶端類型(Client Type):
- 機密(confidential)——你有後端,能安全保管
client_secret(Web 服務、後端服務)。 - 公開(public)——純前端 / 桌面 / CLI / 行動裝置,無法保管密鑰,必須使用 PKCE。
- 機密(confidential)——你有後端,能安全保管
- 回呼位址(Redirect URIs):授權完成後使用者被重新導向回的位址,必須與你發起授權時傳入的
redirect_uri完全一致,可填寫多個。 - 權限範圍(Scopes):勾選上一節中你需要的 scope。
client_id;機密用戶端還會一次性顯示 client_secret——立即儲存,關閉後無法再次查看(可在詳情頁「輪換密鑰 / Rotate Secret」重新產生,舊密鑰立即失效)。
每個帳號最多可建立 20 個 OAuth 應用程式。
第 2 步:將使用者重新導向至授權頁
在你的應用程式中,將使用者瀏覽器跳轉至授權頁,帶上查詢參數:state:自行產生的隨機字串,回呼時原樣帶回,用來防範 CSRF,務必驗證。- PKCE(公開用戶端必做,機密用戶端也建議):先產生隨機
code_verifier,再計算code_challenge = BASE64URL( SHA256( code_verifier ) ),將code_challenge放入授權 URL,code_verifier自己保留至第 4 步使用。
<redirect_uri>?error=access_denied&error_description=...&state=...。
授權碼有效期限為 10 分鐘,且只能使用一次。
第 3 步:使用授權碼交換權杖
在你的後端(機密用戶端)或用戶端(PKCE 公開用戶端)使用code 呼叫權杖端點。
機密用戶端(帶 client_secret):
refresh_token 僅在申請了 offline_access 時出現):
access_token 是一個 JWT,內含 scope 宣告;有效期 15 天(expires_in 秒數)。Refresh Token 有效期 30 天。
第 4 步:用 Access Token 呼叫介面
把權杖放進Authorization: Bearer 標頭即可。
讀取使用者資訊(UserInfo,欄位依已授權 scope 篩選):
platform.acedata.cloud,依 scope 驗證)。例如已獲 credentials:read:
scope 宣告——權杖只能存取使用者授權過的資源。若存取了未授權的資源,會回傳 403。
重新整理權杖
Access Token 過期後,用 Refresh Token 換一對新權杖(需當初申請了offline_access):
撤銷權杖
真實案例:我們自己的 MCP 伺服器就是這樣串接的
Ace Data Cloud 的 15+ 個 MCP 伺服器(NanoBanana、Midjourney、Suno、Seedance、Kling…)在 Claude Desktop / Cursor 裡出現的「Sign in with Ace Data Cloud」連線,走的就是這套流程:它們都是註冊為 公開(PKCE) 類型的 OAuth 應用程式,申請credentials 相關 scope,使用者授權後 MCP 伺服器即可代表使用者呼叫 api.acedata.cloud——無需使用者手動貼上 API Key。你的串接方式和它們完全一樣。
常見錯誤
錯誤回應統一為{ "error": "<code>", "error_description": "<人類可讀說明>" }:
限制速查
在 Studio 首頁嵌入第三方 OAuth 應用程式
Studio 的「設定 → 首頁 → 網站元件」可啟用 OAuth,設定第三方應用程式的client_id 和已登記的回呼地址。
網站與回呼必須使用 HTTPS、具有相同的來源(協定、網域名稱和連接埠),並與 Studio 使用不同的來源。
設定中不得填寫 client_secret;應用程式密鑰只能存放在第三方後端。
元件申請的權限為 profile:read credentials:read。每位訪客需要個別同意;站長設定元件不代表訪客授權。
第三方頁面產生隨機 state 和 PKCE verifier,向 Studio 傳送 S256 challenge。Studio 在元件區域承載官方授權頁,
使用者同意後,第三方收到一次性授權碼,呼叫 token 端點換取 OAuth access token,隨後存取
GET https://platform.acedata.cloud/api/v1/credentials/?user_id=<使用者ID> 讀取現有 API Key。
使用者 ID 來自前一步 GET https://auth.acedata.cloud/api/v1/users/me 回傳的 id;憑證清單介面不接受 user_id=me。
Studio 不向第三方傳送自己的登入 token 或直接讀取並注入使用者的 Key。
公開用戶端必須使用 S256 PKCE。換取 token 時必須傳入與授權請求完全一致的 redirect_uri。
授權碼只能兌換一次。授權前會檢查回呼地址是否已登記。
第三方頁面需要實作訊息協定;任意現成網頁不能僅靠填寫 URL 自動接入。
完整範例見 Studio OAuth 元件串接指南。
授權讀取 API Key 等於允許第三方儲存並使用該 Key。取消 OAuth 授權不會使第三方已複製的 Key 失效;
使用者需要另外撤銷或輪換 Key。
