Last Updated: 2026-05-04
Esta guía explica cómo configurar Google OAuth para permitir que los usuarios inicien sesión con su cuenta de Google.
- Una cuenta de Google (gmail)
- Acceso a Google Cloud Console
- Ve a Google Cloud Console
- Haz clic en el selector de proyectos (parte superior izquierda)
- Haz clic en "Nuevo proyecto"
- Nombre sugerido:
Picks4All(o el que prefieras) - Haz clic en "Crear"
- Espera a que se cree el proyecto y selecciónalo
No necesitas habilitar ninguna API adicional. Picks4All usa Google Identity Services (el script gsi/client de Sign In with Google) y verifica los ID tokens en el backend con google-auth-library. Basta con configurar la pantalla de consentimiento y crear las credenciales OAuth 2.0 (pasos 3 y 4).
Nota: La antigua "Google+ API" fue descontinuada por Google en 2019 y la aplicación no la utiliza.
- En el menú lateral, ve a "APIs y servicios" → "Pantalla de consentimiento de OAuth"
- Selecciona "Externos" (si es para pruebas/desarrollo)
- Haz clic en "Crear"
Completa los campos obligatorios:
- Nombre de la aplicación:
Picks4All - Correo de asistencia al usuario: Tu email de Gmail
- Logo de la aplicación: (Opcional) Puedes subirlo después
- Correo electrónico del desarrollador: Tu email de Gmail
Haz clic en "Guardar y continuar"
En esta sección puedes dejarlo vacío o agregar scopes básicos:
emailprofileopenid
Estos scopes se solicitan automáticamente por Google Sign In.
Haz clic en "Guardar y continuar"
Si tu app está en modo "Externo" y no publicada, necesitas agregar usuarios de prueba:
- Haz clic en "Agregar usuarios"
- Agrega los emails de las personas que probarán la app (incluyendo el tuyo)
- Haz clic en "Agregar"
- Haz clic en "Guardar y continuar"
Revisa la información y haz clic en "Volver al panel"
- En el menú lateral, ve a "APIs y servicios" → "Credenciales"
- Haz clic en "Crear credenciales" (parte superior)
- Selecciona "ID de cliente de OAuth 2.0"
-
Tipo de aplicación: Selecciona "Aplicación web"
-
Nombre:
Picks4All Web Client(o el que prefieras) -
Orígenes de JavaScript autorizados:
- Para desarrollo local:
http://localhost:3001(puerto del frontend; el backend usa 3000) - Para producción:
https://picks4all.com
- Para desarrollo local:
-
URIs de redirección autorizados:
- Para desarrollo:
http://localhost:3001 - Para producción:
https://picks4all.com
Nota: Google Sign In no requiere URIs de redirección específicos como
/callback, solo el origen. - Para desarrollo:
-
Haz clic en "Crear"
Aparecerá un modal con tus credenciales:
- ID de cliente:
123456789-abc...xyz.apps.googleusercontent.com - Secreto del cliente:
GOCSPX-...(no lo necesitas para el frontend)
Copia el ID de cliente y guárdalo.
Agrega la siguiente variable a backend/.env:
GOOGLE_CLIENT_ID=TU_CLIENT_ID_AQUI.apps.googleusercontent.comEjemplo:
GOOGLE_CLIENT_ID=123456789-abc123def456.apps.googleusercontent.comCrea o actualiza frontend-next/.env.local:
NEXT_PUBLIC_GOOGLE_CLIENT_ID=TU_CLIENT_ID_AQUI.apps.googleusercontent.comEjemplo:
NEXT_PUBLIC_GOOGLE_CLIENT_ID=123456789-abc123def456.apps.googleusercontent.comIMPORTANTE: El mismo Client ID se usa en backend y frontend.
Reinicia el servidor backend:
cd backend
npm run devDeberías ver en los logs que NO aparece el warning:
⚠️ GOOGLE_CLIENT_ID no configurado. Google OAuth NO funcionará.
Reinicia el servidor frontend. El backend ya ocupa el puerto 3000, así que el frontend debe arrancar en 3001 (el script dev es next dev, que por defecto usa 3000):
cd frontend-next
PORT=3001 npm run devVe a http://localhost:3001 (puerto del frontend) y deberías ver:
- El formulario de login normal
- Una línea divisoria que dice "o continúa con"
- El botón de Google Sign In (azul con el logo de Google)
- Haz clic en el botón de "Continuar con Google"
- Selecciona tu cuenta de Google
- Si estás en modo de prueba, verifica que tu email esté en la lista de usuarios de prueba
- Acepta los permisos solicitados
- Deberías ser redirigido al Dashboard automáticamente
En el backend verás logs de auditoría:
✅ Email enviado: ...
LOGIN_GOOGLE o REGISTER_GOOGLE
NUNCA commitees tus archivos .env al repositorio. Ya están en .gitignore.
Compartir credenciales:
- El
GOOGLE_CLIENT_IDes público (se envía al frontend) - El
GOOGLE_CLIENT_SECRET(si lo usas) es privado (solo backend)
Desarrollo (Externo):
- Solo usuarios agregados en "Usuarios de prueba" pueden iniciar sesión
- Ideal para desarrollo y testing
Producción:
- Debes verificar tu app con Google
- Proceso de revisión que puede tomar días/semanas
- Requiere políticas de privacidad, términos de servicio, etc.
Para MVP, quédate en modo "Externo" con usuarios de prueba.
Causa: El origin del frontend no está en la lista de orígenes autorizados.
Solución:
- Ve a Google Cloud Console → Credenciales
- Edita tu OAuth 2.0 Client ID
- Agrega
http://localhost:3001a "Orígenes de JavaScript autorizados" (puerto del frontend) - Guarda y espera 5 minutos para que se propague
Causa: La URI de redirección no coincide.
Solución:
- Para Google Sign In (One Tap/Button), no necesitas URIs de redirección específicos
- Solo asegúrate de que el origen esté autorizado
Verifica:
- Que
NEXT_PUBLIC_GOOGLE_CLIENT_IDesté enfrontend-next/.env.local - Que reiniciaste el servidor frontend (
PORT=3001 npm run dev) - Que el script de Google esté cargado (abre DevTools → Network → busca
gsi/client) - Revisa la consola del navegador por errores
Causa: Cookies de terceros bloqueadas o navegador en modo incógnito.
Solución:
- Usa el navegador en modo normal (no incógnito)
- Habilita cookies de terceros (temporalmente para pruebas)
- En producción, configura dominios apropiados
Causa: FedCM (Federated Credential Management) no es compatible con todos los navegadores, especialmente Safari.
Solución:
Al inicializar Google Sign In, deshabilita FedCM con el parámetro use_fedcm_for_prompt: false:
google.accounts.id.initialize({
client_id: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID,
callback: handleCredentialResponse,
use_fedcm_for_prompt: false, // Requerido para compatibilidad con Safari
});Nota: Sin esta opción, Google Sign In puede fallar silenciosamente en Safari y otros navegadores que no soportan FedCM.
Una vez configurado Google OAuth:
-
Prueba el flujo completo:
- Registro con Google
- Login con Google
- Vinculación de cuenta existente
-
Producción:
- Agrega dominio real a orígenes autorizados
- Completa la verificación de la app con Google
- Publica políticas de privacidad y términos de servicio
-
Mejoras futuras (v2.0):
- Desvinculación de cuenta Google
- Múltiples proveedores OAuth (Facebook, Twitter, etc.)
- Login sin password (passwordless)