Google People y Calendar (OAuth)

← Variables de Entorno

Permite que cada equipo conecte una cuenta de Google (usuario real) para sincronizar contactos y eventos del calendario hacia Humano. Es distinto de Google Analytics: allí se usa una cuenta de servicio; aquí se usa OAuth 2.0 con consentimiento del usuario.

Importante
  • La conexión la hace un usuario autenticado; los datos se asocian al equipo actual (current team) y a ese usuario.
  • En producción hace falta que el servidor ejecute colas (queue worker) y el programador de Laravel (scheduler) para que la sincronización periódica funcione.
1. Requisitos previos
  • Proyecto en Google Cloud Console con las APIs habilitadas: Google People API y Google Calendar API.
  • Pantalla de consentimiento OAuth configurada (tipo interno o externo según tu organización).
  • Credenciales OAuth de tipo Aplicación web: Client ID y Client secret.
  • Migraciones de base de datos aplicadas en el entorno (tablas external_accounts, sync_cursors, etc.).
2. Variables de entorno en el servidor

Añade o revisa en el archivo .env del servidor (Forge, Herd local, etc.):

APP_URL=https://humano.test
GOOGLE_CLIENT_ID=tu-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=tu-client-secret
GOOGLE_OAUTH_SCOPES="openid,email,profile,https://www.googleapis.com/auth/contacts,https://www.googleapis.com/auth/calendar.events"
  • La URL de redirección OAuth es siempre https://wapify.me/integrations/google/callback según APP_URL en config/app.php. Registrá esa URI exacta en Google Cloud.
  • GOOGLE_OAUTH_SCOPES: lista separada por comas. Los valores por defecto incluyen permisos de lectura y escritura en contactos y eventos del calendario principal (primary), para importar desde Google y enviar cambios hechos en Humano hacia Google. Tras cambiar scopes, reconecta Google en Team Settings para que el usuario vuelva a aceptar el consentimiento.
3. Google Cloud: URI de redirección

En Google Cloud Console → APIs y servicios → Credenciales → tu ID de cliente OAuth (aplicación web) → URI de redirección autorizadas, añade:

https://wapify.me/integrations/google/callback

Para desarrollo local con Herd, algo como https://humano.test/integrations/google/callback si ese es tu APP_URL.

4. Conectar la cuenta desde Humano
  1. Inicia sesión y selecciona el equipo que quieres configurar.
  2. Ve a Configuración del equipo (Team Settings): https://wapify.me/team/<id>/settings.
  3. En la tarjeta Google People & Calendar, pulsa Connect.
  4. Completa el consentimiento de Google y acepta los permisos solicitados.
  5. Al volver a la aplicación, la tarjeta debería mostrar Connected. Para revocar el acceso en Humano, usa Disconnect.

La integración de Google Analytics (cuenta de servicio + Property ID) sigue configurándose en la misma zona de Team Settings, tarjeta Google Analytics. Son dos mecanismos distintos: uno no sustituye al otro.

5. Sincronización automática y manual

El programador de Laravel puede encolar el comando google:sync-data para todos los equipos con cuenta Google conectada. Asegúrate de tener el cron de Laravel:

* * * * * cd /ruta/al/proyecto && php artisan schedule:run >> /dev/null 2>&1

Y un worker de cola procesando la cola por defecto:

php artisan queue:work

Sincronización manual desde servidor:

php artisan google:sync-data
php artisan google:sync-data --account_id=123
6. Solución de problemas
  • redirect_uri_mismatch: la URI en Google Cloud no coincide con https://wapify.me/integrations/google/callback (derivada de APP_URL).
  • access_denied: el usuario canceló o la pantalla de consentimiento no incluye los scopes necesarios.
  • Sin datos nuevos: revisa que el worker de cola esté activo y que existan filas en sync_runs para diagnosticar errores de última ejecución.

Inicia sesión en Humano y abre Configuración del equipo (Team Settings) desde el menú de usuario.