Conectar un Google Calendar
Esta guía te muestra cómo conectar Google Calendar a un espacio de trabajo. La conexión es por espacio de trabajo: sincroniza los eventos de ese espacio en Control Center, en modo de solo lectura. Consulta Calendario y agenda para ver el panorama completo.
Conectar una cuenta
Sección titulada «Conectar una cuenta»- Abre Calendario en la barra lateral.
- Haz clic en Añadir cuenta de calendario en la barra lateral del calendario. (La misma sección está en Ajustes → Espacio de trabajo → Perfil e identidad, dentro de Google Calendar).
- Elige cómo autorizar:
- Usar la app de Google de Control Center — no hay nada que configurar. Es la opción predeterminada cuando tu compilación incluye una.
- Usar mi propio cliente de Google Cloud — pega el ID de cliente y el secreto de tu propio proyecto (consulta Trae tu propio cliente de Google).
- Haz clic en Conectar Google Calendar. El cuadro de diálogo muestra un código corto y un enlace a la página de dispositivos de Google.
- Abre esa página en cualquier dispositivo, introduce el código y aprueba el acceso solicitado. El cuadro de diálogo se cierra solo y tus eventos empiezan a sincronizarse.
El servidor, y no tu dispositivo, realiza este intercambio y conserva el token de actualización resultante — por eso el código se aprueba en «cualquier dispositivo» y no en esta app en concreto.
La cuenta se conecta solo al espacio de trabajo activo. Cambia de espacio de trabajo y verás los calendarios de ese espacio en su lugar.
El flujo de conexión solicita calendar.readonly además de tu correo: los
mismos alcances para la app integrada y para un cliente que pegues tú. Control
Center lee los eventos; no crea, edita ni elimina eventos en Google, ni responde
a invitaciones.
Cómo funciona la sincronización
Sección titulada «Cómo funciona la sincronización»El servidor es el dueño de la programación: recorre las cuentas conectadas de todos los espacios de trabajo cada dos minutos y escribe los eventos en la base de datos del espacio de trabajo. Los clientes nunca hablan con Google: leen lo que escribió el servidor.
El barrido es incremental. La primera pasada por calendario obtiene una ventana móvil (60 días hacia atrás y 90 hacia adelante) y captura el token de sincronización de Google; las pasadas posteriores presentan ese token y reciben solo lo que cambió, que es lo que hace costeable una cadencia de dos minutos. La ventana se reancla con una sincronización completa cada 24 horas y siempre que Google invalide el token.
Los tokens de actualización residen en el servidor, en secrets.json dentro del
directorio de datos del servidor, con permisos solo para el propietario (0600)
— no en el llavero del sistema operativo y nunca en un dispositivo cliente.
Conectar varias cuentas
Sección titulada «Conectar varias cuentas»Un espacio de trabajo puede conectar varias cuentas de Google (por ejemplo, la del trabajo y la personal). Repite el paso de conexión para cada una; sus eventos se fusionan en las mismas vistas de mes, semana y agenda. Cada cuenta se sincroniza y se actualiza de forma independiente, y cada una se puede desconectar por separado.
Volver a conectar una cuenta caducada
Sección titulada «Volver a conectar una cuenta caducada»Si Google invalida de forma permanente el token de una cuenta (una sesión revocada o caducada hace mucho tiempo), la sincronización se detiene y Control Center muestra un banner de Volver a conectar en el calendario, además de una notificación de escritorio. Haz clic en Volver a conectar y aprueba un código nuevo; el banner desaparece con la siguiente sincronización correcta.
Desconectar una cuenta
Sección titulada «Desconectar una cuenta»En la barra lateral del calendario (o en Ajustes → Espacio de trabajo → Perfil e identidad), haz clic en Desconectar en la cuenta. Esto elimina sus eventos sincronizados y borra sus tokens almacenados en el servidor.
Conectar desde un servidor headless
Sección titulada «Conectar desde un servidor headless»Un servidor sin interfaz gráfica conecta la misma cuenta desde su propio terminal:
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \ cc_server calendar connect --data-dir <dir> --workspace <workspace-id>Imprime un código y una URL, espera la aprobación y luego almacena los tokens y sincroniza en el siguiente barrido.
Una compilación desde el código fuente no incluye ningún cliente de Google,
así que el ID y el secreto son obligatorios: define
GOOGLE_OAUTH_CLIENT_ID y GOOGLE_OAUTH_CLIENT_SECRET. No existe una opción
--google-client-id (las opciones desconocidas se ignoran). Sin el par de
variables de entorno, el comando termina con un error de cliente ausente.
Trae tu propio cliente de Google (forks y autohospedaje)
Sección titulada «Trae tu propio cliente de Google (forks y autohospedaje)»Las compilaciones publicadas incluyen un cliente de Google, así que la mayoría de la gente nunca necesita tocar esto. Trae el tuyo si compilas desde el código fuente, ejecutas tu propio servidor o quieres que la pantalla de consentimiento muestre el nombre de tu propio proyecto.
- En la Google Cloud Console, habilita la Google Calendar API y configura la pantalla de consentimiento de OAuth, agregando los alcances
calendar.readonly,openidyemail. Mientras la app no esté verificada, agrégate como usuario de prueba. Agregarcalendar.eventsen la pantalla de consentimiento no habilita la respuesta a invitaciones: Control Center nunca solicita ese alcance. - Crea un ID de cliente de OAuth con el tipo de aplicación TVs and limited input devices y copia tanto el ID de cliente como el secreto de cliente.
- Proporciónalos por conexión (elige Usar mi propio cliente de Google Cloud en el cuadro de diálogo) o para todo el servidor con
GOOGLE_OAUTH_CLIENT_IDyGOOGLE_OAUTH_CLIENT_SECRET.
Un par definido para todo el servidor reemplaza al integrado en todas partes, incluso detrás de la opción «usar la app de Google de Control Center» — así que, en tu propio servidor, esa opción es tu app.
El secreto de cliente nunca sale del servidor: ninguna respuesta RPC lo transporta, y una cuenta conectada mediante el cliente propio del servidor almacena un marcador en lugar de una copia del par, así que rotarlo es cuestión de reiniciar con un valor nuevo.
Solución de problemas
Sección titulada «Solución de problemas»| Síntoma | Causa probable |
|---|---|
| El cuadro de diálogo no ofrece la opción integrada | Esta compilación no incluye ningún cliente de Google (una compilación desde el código fuente), o el servidor se inició con solo una mitad del par. Tanto el ID como el secreto son obligatorios |
invalid_scope al iniciar el flujo |
El calendario no está permitido para un cliente de código de dispositivo en ese proyecto de Cloud. Usa mejor un proyecto con un cliente de loopback o web |
invalid_client de Google |
El cliente no es un cliente de TVs and limited input devices, o el ID y el secreto son de clientes distintos |
| La aprobación se realiza pero la sincronización está vacía | Tu cuenta no es un usuario de prueba en la pantalla de consentimiento, o no se otorgó calendar.readonly |
| El código caduca antes de que lo apruebes | Los códigos de dispositivo duran poco. Inicia de nuevo la conexión para obtener uno nuevo |
| «No se pudo actualizar tu respuesta» al responder una invitación | Es lo esperado: el flujo de conexión nunca solicita calendar.events |
| La sincronización se detiene con una advertencia de actualización en el registro del servidor | La cuenta se conectó con un cliente que ya no está configurado. Vuelve a conectar la cuenta, o restaura ese ID de cliente y ese secreto |
Guías relacionadas
Sección titulada «Guías relacionadas»- Grabar y resumir una reunión: convierte un evento en una grabación
- Ejecutar un servidor headless: dónde residen los tokens y la programación de la sincronización
- Configurar la integración de GitHub