Aller au contenu

Connecter un Google Calendar

Ce guide explique comment connecter Google Calendar à un espace de travail. La connexion est propre à chaque espace de travail : elle synchronise en lecture seule les événements de cet espace de travail dans Control Center. Consultez Calendrier et planification pour une vue d’ensemble.

  1. Ouvrez Calendrier dans la barre latérale.
  2. Cliquez sur Ajouter un compte de calendrier dans la barre latérale du calendrier. (La même section se trouve dans Paramètres → Espace de travail → Profil et identité, sous Google Calendar.)
  3. Choisissez le mode d’autorisation :
    • Utiliser l’app Google de Control Center — rien à configurer. C’est le mode par défaut lorsque votre version en inclut une.
    • Utiliser mon propre client Google Cloud — collez un identifiant client et un secret provenant de votre propre projet (voir Fournir votre propre client Google).
  4. Cliquez sur Connecter Google Calendar. La boîte de dialogue affiche un court code et un lien vers la page d’appareil de Google.
  5. Ouvrez cette page sur n’importe quel appareil, saisissez le code et approuvez l’accès demandé. La boîte de dialogue se ferme d’elle-même et vos événements commencent à se synchroniser.

C’est le serveur, et non votre appareil, qui effectue cet échange et conserve le jeton d’actualisation obtenu — voilà pourquoi le code est approuvé sur “n’importe quel appareil” plutôt que dans cette app en particulier.

Le compte est connecté à l’espace de travail actif uniquement. Changez d’espace de travail et vous verrez plutôt les calendriers de cet espace-là.

Le flux de connexion demande calendar.readonly ainsi que votre courriel — les mêmes portées pour l’app intégrée et pour un client que vous collez. Control Center lit les événements; il n’en crée pas, n’en modifie pas, n’en supprime pas et ne répond à aucune invitation sur Google.

C’est le serveur qui est maître du calendrier : il balaie toutes les deux minutes les comptes connectés de chaque espace de travail et écrit les événements dans la base de données de l’espace de travail. Les clients ne communiquent jamais avec Google — ils lisent ce que le serveur a écrit.

Le balayage est incrémentiel. La première passe de chaque calendrier récupère une fenêtre glissante (60 jours en arrière, 90 jours en avant) et conserve le jeton de synchronisation de Google; les passes suivantes présentent ce jeton et ne reçoivent que ce qui a changé, ce qui rend abordable une cadence de deux minutes. La fenêtre est réancrée par une synchronisation complète toutes les 24 heures et chaque fois que Google invalide le jeton.

Les jetons d’actualisation résident côté serveur dans secrets.json, sous le répertoire de données du serveur, avec des droits en écriture réservés au propriétaire (0600) — pas dans le trousseau du système d’exploitation et jamais sur un appareil client.

Un espace de travail peut connecter plusieurs comptes Google (par exemple un compte professionnel et un compte personnel). Répétez l’étape de connexion pour chacun; leurs événements sont fusionnés dans les mêmes vues mois / semaine / agenda. Chaque compte se synchronise et s’actualise indépendamment et chacun peut être déconnecté de son côté.

Si Google invalide définitivement le jeton d’un compte (session révoquée ou expirée depuis longtemps), la synchronisation s’arrête et Control Center affiche une bannière Reconnecter sur le calendrier, ainsi qu’une notification de bureau. Cliquez sur Reconnecter et approuvez un nouveau code; la bannière disparaît à la prochaine synchronisation réussie.

Dans la barre latérale du calendrier (ou Paramètres → Espace de travail → Profil et identité), cliquez sur Déconnecter pour le compte. Cette action supprime les événements synchronisés de ce compte et efface les jetons stockés sur le serveur.

Un serveur sans interface graphique connecte le même compte depuis son propre terminal :

Fenêtre de terminal
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \
cc_server calendar connect --data-dir <dir> --workspace <workspace-id>

Il affiche un code et une URL, attend l’approbation, puis enregistre les jetons et synchronise au prochain balayage.

Une compilation à partir du code source ne fournit aucun client Google; l’identifiant et le secret sont donc obligatoires — définissez GOOGLE_OAUTH_CLIENT_ID et GOOGLE_OAUTH_CLIENT_SECRET. Il n’existe aucun drapeau --google-client-id (les drapeaux inconnus sont ignorés). Sans cette paire de variables d’environnement, la commande se termine par une erreur de client manquant.

Fournir votre propre client Google (forks et auto-hébergement)

Section intitulée “Fournir votre propre client Google (forks et auto-hébergement)”

Les versions publiées incluent un client Google, alors la plupart des gens n’ont jamais à s’en occuper. Fournissez le vôtre si vous compilez à partir du code source, exploitez votre propre serveur ou souhaitez que l’écran de consentement nomme votre propre projet.

  1. Dans la console Google Cloud, activez Google Calendar API et configurez l’OAuth consent screen, en y ajoutant les portées calendar.readonly, openid et email. Tant que l’app n’est pas vérifiée, ajoutez-vous comme test user. Ajouter calendar.events à cet écran de consentement n’active pas les RSVP — Control Center ne demande jamais cette portée.
  2. Créez un OAuth client ID de type d’application TVs and limited input devices, puis copiez l’identifiant client et le secret du client.
  3. Fournissez-les soit à chaque connexion (choisissez Utiliser mon propre client Google Cloud dans la boîte de dialogue), soit pour tout le serveur avec GOOGLE_OAUTH_CLIENT_ID et GOOGLE_OAUTH_CLIENT_SECRET.

Une paire définie pour tout le serveur remplace la paire intégrée partout, y compris derrière l’option “Utiliser l’app Google de Control Center” — ainsi, sur votre propre serveur, cette option correspond à votre app.

Le secret du client ne quitte jamais le serveur : aucune réponse RPC ne le transporte et un compte connecté au moyen du client propre au serveur stocke un marqueur plutôt qu’une copie de la paire, si bien que sa rotation se résume à un redémarrage avec une nouvelle valeur.

Symptôme Cause probable
La boîte de dialogue n’offre aucune option intégrée Cette version ne fournit aucun client Google (compilation à partir du code source), ou le serveur a été démarré avec une seule moitié de la paire. L’identifiant et le secret sont tous deux obligatoires
invalid_scope au démarrage du flux Calendar n’est pas autorisé pour un client à code d’appareil dans ce projet Cloud. Utilisez plutôt un projet avec un client loopback ou un client Web
invalid_client renvoyé par Google Le client n’est pas un client TVs and limited input devices, ou l’identifiant et le secret proviennent de clients différents
L’approbation réussit, mais la synchronisation est vide Votre compte n’est pas un test user sur l’écran de consentement, ou la portée calendar.readonly n’a pas été accordée
Le code expire avant que vous l’approuviez Les codes d’appareil sont de courte durée. Relancez la connexion pour en obtenir un nouveau
“Impossible de mettre à jour votre réponse” lors d’un RSVP Comportement attendu : le flux de connexion ne demande jamais calendar.events
La synchronisation s’arrête avec un avertissement d’actualisation dans le journal du serveur Le compte a été connecté avec un client qui n’est plus configuré. Reconnectez le compte ou restaurez l’identifiant et le secret de ce client