route.ts 918 B

12345678910111213141516171819202122232425262728
  1. import { NextRequest, NextResponse } from 'next/server';
  2. import { fetchJson } from '@/lib/utils/server';
  3. export async function GET(request: NextRequest)
  4. {
  5. const { searchParams, origin } = request.nextUrl;
  6. const code = searchParams.get('code');
  7. const error = searchParams.get('error');
  8. if (error || !code) {
  9. return NextResponse.redirect(new URL('/studio/settings?error=cancelled', request.url));
  10. }
  11. const redirectUri = `${origin}/api/auth/youtube/callback`;
  12. const res = await fetchJson('/api/studio/youtube-connect', {
  13. method: 'POST',
  14. body: JSON.stringify({ code, redirectUri }),
  15. headers: { 'Content-Type': 'application/json' }
  16. });
  17. if (!res.success) {
  18. const msg = encodeURIComponent(res.message ?? '연결 실패');
  19. return NextResponse.redirect(new URL(`/studio/settings?error=${msg}`, request.url));
  20. }
  21. return NextResponse.redirect(new URL('/studio/settings?connected=true', request.url));
  22. }