Implementa el flujo completo de OAuth social de Medusa para el storefront: boton "Continuar con Google" en account-dialog, ruta proxy que arranca el flujo (GET /api/customer/google/start) y pagina de callback en /auth/google/callback (coincide con GOOGLE_CALLBACK_URL del secret) que resuelve el code/state contra el backend, decodifica el JWT para distinguir cliente nuevo vs existente, crea el customer si hace falta y refresca el token a sesion final -- mismo patron de store/customer-store.ts que login/register por email. Flujo verificado en vivo contra el backend ya desplegado (GET /auth/customer/google, /auth/customer/google/callback con state invalido, /auth/token/refresh con bearer invalido) antes de escribir el codigo, no solo contra la documentacion.
15 lines
504 B
TypeScript
15 lines
504 B
TypeScript
import { handleGoogleCallback } from "@/lib/headless/providers/medusa-customer";
|
|
|
|
export async function POST(request: Request) {
|
|
const { code, state } = await request.json();
|
|
if (!code || !state) {
|
|
return Response.json({ error: "Faltan parámetros de Google" }, { status: 400 });
|
|
}
|
|
try {
|
|
const customer = await handleGoogleCallback(code, state);
|
|
return Response.json(customer);
|
|
} catch (error) {
|
|
return Response.json({ error: (error as Error).message }, { status: 400 });
|
|
}
|
|
}
|