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
580 B
TypeScript
15 lines
580 B
TypeScript
import { getGoogleAuthUrl } from "@/lib/headless/providers/medusa-customer";
|
|
|
|
// Navegacion de pagina completa (no fetch/XHR) -- el boton "Continuar
|
|
// con Google" enlaza directo aca, el browser sigue el 302 hasta la
|
|
// pantalla real de consentimiento de Google.
|
|
export async function GET(request: Request) {
|
|
try {
|
|
const location = await getGoogleAuthUrl();
|
|
return Response.redirect(location);
|
|
} catch (error) {
|
|
const message = encodeURIComponent((error as Error).message);
|
|
return Response.redirect(new URL(`/?googleAuthError=${message}`, request.url));
|
|
}
|
|
}
|