import { createRouteHandlerClient } from '@supabase/auth-helpers-nextjs'; import { cookies } from 'next/headers'; import { NextResponse } from 'next/server'; import type { NextRequest } from 'next/server'; export async function GET(request: NextRequest) { const requestUrl = new URL(request.url); const code = requestUrl.searchParams.get('code'); // 如果没有code参数,则重定向到登录页面 if (!code) { return NextResponse.redirect(new URL('/login', request.url)); } try { // 创建supabase客户端 const cookieStore = cookies(); const supabaseRouteHandler = createRouteHandlerClient({ cookies: () => cookieStore }); // 交换code获取会话 await supabaseRouteHandler.auth.exchangeCodeForSession(code); // 直接重定向到首页,避免中间跳转 return NextResponse.redirect(new URL('/', request.url)); } catch (error) { console.error('Auth callback error:', error); // 出错时重定向到登录页面 return NextResponse.redirect( new URL('/login?message=Authentication failed. Please try again.', request.url) ); } }