From d39cb2e7d5c3613dc40707088419974e94291ad5 Mon Sep 17 00:00:00 2001 From: wood chen Date: Fri, 21 Feb 2025 20:29:00 +0800 Subject: [PATCH] feat: Improve OAuth state parsing and error handling in sign-in route --- src/app/api/auth/q58/route.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/app/api/auth/q58/route.ts b/src/app/api/auth/q58/route.ts index 32ef508..7497157 100644 --- a/src/app/api/auth/q58/route.ts +++ b/src/app/api/auth/q58/route.ts @@ -14,9 +14,18 @@ export async function POST(_req: Request) { // 检查是否存在 OAuth 状态 const oauthState = cookies().get("oauth_state"); - const return_url = oauthState - ? `${hostUrl}/authorize` // 如果存在 OAuth 状态,重定向到 authorize 页面 - : `${hostUrl}/dashboard`; // 否则重定向到仪表板 + let return_url = `${hostUrl}/dashboard`; // 默认重定向到仪表板 + + if (oauthState) { + try { + // 解码并重建 OAuth URL + const params = JSON.parse(atob(oauthState.value)); + const searchParams = new URLSearchParams(params); + return_url = `${hostUrl}/oauth/authorize?${searchParams.toString()}`; + } catch (error) { + console.error("Failed to process OAuth state:", error); + } + } const sso = btoa(`nonce=${nonce}&return_sso_url=${return_url}`); const sig = hmacSHA256(sso, clientSecret).toString(Hex);