trading-platform/docs/02-definicion-modulos/OQI-001-fundamentos-auth/historias-usuario/US-AUTH-003-oauth-google.md
rckrdmrd a7cca885f0 feat: Major platform documentation and architecture updates
Changes include:
- Updated architecture documentation
- Enhanced module definitions (OQI-001 to OQI-008)
- ML integration documentation updates
- Trading strategies documentation
- Orchestration and inventory updates
- Docker configuration updates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:33:35 -06:00

11 KiB

id title type status priority epic story_points created_date updated_date
US-AUTH-003 Login con Google User Story Done Alta OQI-001 5 2025-12-05 2026-01-04

US-AUTH-003: Login con Google

Version: 1.0.0 Fecha: 2025-12-05 Estado: Implementado Story Points: 5 Prioridad: P0 (Crítica) Épica: OQI-001


Historia de Usuario

Como visitante de OrbiQuant Quiero poder iniciar sesión con mi cuenta de Google Para acceder rápidamente sin crear nuevas credenciales


Criterios de Aceptación

AC-001: Botón de Google visible

Dado que estoy en la página de login o registro Cuando veo las opciones de inicio de sesión Entonces debería ver un botón "Continuar con Google" claramente visible

AC-002: Redirección a Google

Dado que hago click en "Continuar con Google" Cuando se inicia el flujo OAuth Entonces debería ser redirigido a la página de autorización de Google

AC-003: Autorización exitosa (usuario nuevo)

Dado que autorizo el acceso en Google Y mi email de Google no está registrado en OrbiQuant Cuando Google me redirige de vuelta Entonces debería:

  1. Crear una nueva cuenta automáticamente
  2. Usar mis datos de Google (nombre, email, foto)
  3. Marcar mi email como verificado
  4. Iniciar sesión automáticamente
  5. Ser redirigido al dashboard

AC-004: Autorización exitosa (usuario existente)

Dado que autorizo el acceso en Google Y mi email de Google ya está registrado en OrbiQuant Cuando Google me redirige de vuelta Entonces debería:

  1. Vincular Google a mi cuenta existente
  2. Iniciar sesión automáticamente
  3. Ser redirigido al dashboard

AC-005: Cancelación de autorización

Dado que hago click en "Continuar con Google" Cuando cancelo la autorización en Google Entonces debería:

  1. Ser redirigido a la página de login
  2. Ver un mensaje "Autorización cancelada"

AC-006: Error de Google

Dado que hago click en "Continuar con Google" Cuando ocurre un error con Google Entonces debería:

  1. Ser redirigido a la página de login
  2. Ver un mensaje "Error al conectar con Google. Intenta de nuevo."

AC-007: Desvinculación de Google

Dado que tengo Google vinculado a mi cuenta Y tengo otro método de autenticación activo Cuando intento desvincular Google desde configuración Entonces debería poder desvincularlo exitosamente

AC-008: Protección de último método

Dado que Google es mi único método de autenticación Cuando intento desvincularlo Entonces debería ver un mensaje "No puedes eliminar tu único método de acceso"


Flujo Visual

┌──────────────────────────────────────────────────────────────────────────┐
│                                                                          │
│  PASO 1: Click en Google                                                 │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │                                                                    │ │
│  │              Inicia sesión en OrbiQuant                           │ │
│  │                                                                    │ │
│  │  ┌──────────────────────────────────────────────────────────────┐│ │
│  │  │  🔵 Continuar con Google                              →      ││ │
│  │  └──────────────────────────────────────────────────────────────┘│ │
│  │                                                                    │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                              │                                           │
│                              ▼                                           │
│  PASO 2: Autorización en Google                                          │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │                                                                    │ │
│  │  ┌────────────────────────────────────────────────────────────┐  │ │
│  │  │                         Google                              │  │ │
│  │  │                                                             │  │ │
│  │  │  OrbiQuant IA quiere acceder a tu cuenta de Google         │  │ │
│  │  │                                                             │  │ │
│  │  │  Esto permitirá a OrbiQuant IA:                            │  │ │
│  │  │  • Ver tu dirección de correo electrónico                  │  │ │
│  │  │  • Ver tu información personal básica                      │  │ │
│  │  │                                                             │  │ │
│  │  │  [Cancelar]                              [Permitir]        │  │ │
│  │  │                                                             │  │ │
│  │  └────────────────────────────────────────────────────────────┘  │ │
│  │                                                                    │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                              │                                           │
│                              ▼                                           │
│  PASO 3: Redirección exitosa                                             │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │                                                                    │ │
│  │  ┌──────────────────────────────────────────────────────────────┐│ │
│  │  │                                                              ││ │
│  │  │  ⏳ Completando inicio de sesión...                          ││ │
│  │  │                                                              ││ │
│  │  └──────────────────────────────────────────────────────────────┘│ │
│  │                                                                    │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                              │                                           │
│                              ▼                                           │
│  PASO 4: Dashboard                                                       │
│                                                                          │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │                                                                    │ │
│  │  ¡Bienvenido, Juan! 👋                                            │ │
│  │                                                                    │ │
│  │  Dashboard...                                                      │ │
│  │                                                                    │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘

Datos Obtenidos de Google

Campo Uso
id provider_user_id en oauth_accounts
email Email del usuario (si no tiene)
verified_email Marcar email como verificado
given_name Nombre del usuario
family_name Apellido del usuario
picture Avatar del usuario

Notas Técnicas

Configuración Google Cloud Console

  1. Crear proyecto en Google Cloud Console
  2. Habilitar Google+ API
  3. Configurar OAuth consent screen
  4. Crear OAuth 2.0 credentials
  5. Agregar redirect URIs autorizados

Variables de Entorno

GOOGLE_CLIENT_ID=xxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=xxx
GOOGLE_CALLBACK_URL=https://api.orbiquant.com/auth/oauth/google/callback

Scopes Solicitados

const scopes = ['profile', 'email'];

Frontend

  • Componente: apps/frontend/src/modules/auth/components/SocialLoginButtons.tsx
  • Callback: apps/frontend/src/modules/auth/pages/AuthCallback.tsx

Backend

  • Service: apps/backend/src/modules/auth/services/oauth.service.ts
  • Endpoint: POST /api/v1/auth/oauth/google

Errores Comunes

Error Causa Solución
invalid_client Client ID incorrecto Verificar configuración
redirect_uri_mismatch URL no autorizada Agregar URL en Google Console
access_denied Usuario canceló Mostrar mensaje amigable

Requerimientos Relacionados

Especificaciones Relacionadas