Skip to content

[fix] 帳密登入在 MCP OAuth 流程下卡在 Signing in:改用整頁導頁避開 callbackURL 的跨網域 fetch CORS - #60

Merged
YJack0000 merged 2 commits into
mainfrom
claude/fix-password-login-cors
Aug 28, 2026
Merged

[fix] 帳密登入在 MCP OAuth 流程下卡在 Signing in:改用整頁導頁避開 callbackURL 的跨網域 fetch CORS#60
YJack0000 merged 2 commits into
mainfrom
claude/fix-password-login-cors

Conversation

@YJack0000

Copy link
Copy Markdown
Contributor

問題

帳密登入在走 MCP OAuth 流程(ChatGPT / Claude / Codex 從 /api/auth/mcp/authorize 進來授權)時,按下登入後永遠卡在「Signing in…」,OAuth 無法完成。Google / SSO 沒這問題。

根因

better-auth 的 email 登入(signIn.email)走的是 fetch。當帶上 callbackURL 時,伺服器回 302,fetch 會自動跟著 redirect 一路走。當 callbackURL 是 MCP 的 /api/auth/mcp/authorize 時,它下一跳會 302 到 claude.ai/api/mcp/auth_callback——這是跨網域fetch 撞上 CORS,直接 Failed to fetch,於是按鈕永遠停在 submitting 狀態、OAuth 斷掉。

Google / SSO 之所以沒事,是因為它們本來就走整頁跳轉(top-level navigation),不受 CORS 限制。

修法

不再把 callbackURL 傳給 signIn.email。改成:email 登入只負責「建立 session」,成功後由我們自己做整頁導頁 window.location.href = redirectTo。top-level navigation 跟著 302 跳去 claude.ai 不受 CORS 限制,OAuth 流程正常完成。

失敗時維持原本行為(401 一律講「email 或密碼不正確」避免帳號探測),並提前 return

@YJack0000
YJack0000 requested a review from yui0303 August 28, 2026 12:35
@github-actions

github-actions Bot commented Aug 28, 2026

Copy link
Copy Markdown

✅ SonarQube Quality Gate passed — pathorsAI_internal

0 open issues on this PR.

@YJack0000
YJack0000 merged commit ff04e8a into main Aug 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant