import { NextResponse } from "next/server"; import { auth } from "@/lib/auth"; import { getTikTokAuthUrl, generateCodeVerifier, generateCodeChallenge } from "@/lib/tiktok"; import { prisma } from "@/lib/prisma"; export async function GET() { const session = await auth(); if (!session?.user) { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); } const userId = (session.user as { id?: string }).id; if (!userId) { return NextResponse.json({ error: "Session error" }, { status: 401 }); } const state = crypto.randomUUID(); const codeVerifier = generateCodeVerifier(); const codeChallenge = await generateCodeChallenge(codeVerifier); console.log("[TikTok PKCE] verifier:", codeVerifier); console.log("[TikTok PKCE] challenge:", codeChallenge); console.log("[TikTok PKCE] verifier length:", codeVerifier.length); // Stocker state + verifier + userId en DB await prisma.tikTokPKCE.create({ data: { state, codeVerifier, userId }, }); const authUrl = getTikTokAuthUrl(state, codeChallenge); console.log("[TikTok PKCE] authUrl:", authUrl); return NextResponse.redirect(authUrl); }