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 programación 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 ámbitos 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 deslizante (60 días hacia atrás y 90 hacia delante) y captura el token de sincronización de Google; las pasadas posteriores presentan ese token y reciben solo lo que ha cambiado, que es lo que hace asumible 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 combinan en las mismas vistas Mes / Semana / Agenda. Cada cuenta se sincroniza y se actualiza de forma independiente, y cada una puede desconectarse por separado.
Reconectar una cuenta caducada
Sección titulada «Reconectar una cuenta caducada»Si Google invalida de forma permanente el token de una cuenta (una sesión revocada o caducada desde hace mucho), la sincronización se detiene y Control Center muestra un aviso de Reconectar en el calendario, además de una notificación de escritorio. Haz clic en Reconectar y aprueba un código nuevo; el aviso desaparece con la siguiente sincronización correcta.
Desconectar una cuenta
Sección titulada «Desconectar una cuenta»Desde la barra lateral del calendario (o 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 ningún flag
--google-client-id (los flags desconocidos se ignoran). Sin el par de variables
de entorno, el comando finaliza 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, añadiendo los ámbitos
calendar.readonly,openidyemail. Mientras la app no esté verificada, añádete como usuario de prueba. Añadircalendar.eventsen la pantalla de consentimiento no habilita la respuesta a invitaciones — Control Center nunca solicita ese ámbito. - Crea un ID de cliente de OAuth con el tipo de aplicación Televisores y dispositivos de entrada limitada 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 sustituye 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ó solo con 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 bucle invertido o web |
invalid_client de Google |
El cliente no es un cliente de Televisores y dispositivos de entrada limitada, 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 usuario de prueba en la pantalla de consentimiento, o no se concedió 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 a una invitación | Es lo esperado: el flujo de conexión nunca solicita calendar.events |
| La sincronización se detiene con un aviso 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 con GitHub