forked from 77media/video-flow
64 lines
2.1 KiB
TypeScript
64 lines
2.1 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
||
|
||
/**
|
||
* Google OAuth回调处理API
|
||
* 注意:POST 方法已废弃,业务逻辑已移至 /users/oauth/callback 页面
|
||
* 此文件现在仅用于处理 Google 的 GET 回调重定向
|
||
*/
|
||
|
||
/**
|
||
* 根据请求获取正确的redirect_uri
|
||
*/
|
||
function getRedirectUri(request: NextRequest): string {
|
||
const host = request.headers.get('host') || '';
|
||
|
||
if (host.includes('localhost') || host.includes('127.0.0.1')) {
|
||
// 本地开发环境:使用实际的端口号(可能是3000或3001)
|
||
const protocol = 'http';
|
||
return `${protocol}://${host}/api/auth/google/callback`;
|
||
} else if (host.includes('movieflow.net')) {
|
||
return 'https://www.movieflow.net/api/auth/google/callback';
|
||
} else if (host.includes('movieflow.ai')) {
|
||
return 'https://www.movieflow.ai/api/auth/google/callback';
|
||
} else {
|
||
// 默认使用生产环境
|
||
return 'https://www.movieflow.ai/api/auth/google/callback';
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 处理GET请求 - Google OAuth回调
|
||
* 将GET请求重定向到页面路由进行处理
|
||
*/
|
||
export async function GET(request: NextRequest) {
|
||
const { searchParams } = new URL(request.url);
|
||
const code = searchParams.get('code');
|
||
const state = searchParams.get('state');
|
||
|
||
if (!code || !state) {
|
||
return NextResponse.json(
|
||
{
|
||
success: false,
|
||
message: 'Missing required parameters: code and state'
|
||
},
|
||
{ status: 400 }
|
||
);
|
||
}
|
||
|
||
// 重定向到页面路由,让页面处理OAuth回调
|
||
const callbackUrl = `/users/oauth/callback?code=${encodeURIComponent(code)}&state=${encodeURIComponent(state)}`;
|
||
|
||
// 修复:确保使用正确的域名进行重定向
|
||
const host = request.headers.get('host') || 'www.movieflow.net';
|
||
const protocol = request.headers.get('x-forwarded-proto') || 'https';
|
||
const fullCallbackUrl = `${protocol}://${host}${callbackUrl}`;
|
||
|
||
console.log('🔍 前端API重定向调试:');
|
||
console.log(' - request.url:', request.url);
|
||
console.log(' - host header:', host);
|
||
console.log(' - protocol:', protocol);
|
||
console.log(' - 重定向到:', fullCallbackUrl);
|
||
|
||
return NextResponse.redirect(fullCallbackUrl);
|
||
}
|