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 les événements de cet espace dans Control Center, en lecture seule. 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 l’option par défaut lorsque votre version embarque une telle app.
    • Utiliser mon propre client Google Cloud — collez un identifiant client et un secret issus de votre propre projet (voir Utiliser votre propre client Google).
  4. Cliquez sur Connecter Google Calendar. La boîte de dialogue affiche un code court 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 exécute cet échange et conserve le jeton de rafraîchissement obtenu — voilà pourquoi le code s’approuve sur « n’importe quel appareil » plutôt que dans cette application en particulier.

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

Le flux de connexion demande la portée calendar.readonly ainsi que votre adresse e-mail — 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, ne les modifie pas, ne les supprime pas et ne répond à aucune invitation côté Google.

C’est le serveur qui détient le planning : 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 parlent jamais à Google — ils lisent ce que le serveur a écrit.

Le balayage est incrémentiel. La première passe sur un calendrier récupère une fenêtre glissante (60 jours en arrière, 90 jours en avant) et capture 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 une cadence de deux minutes soutenable. 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 de rafraîchissement résident côté serveur dans secrets.json, sous le répertoire de données du serveur, écrits en accès propriétaire uniquement (0600) — ni dans le trousseau du système d’exploitation, ni 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 fusionnent dans les mêmes vues mois / semaine / agenda. Chaque compte se synchronise et se rafraîchit indépendamment, et chacun peut être déconnecté séparément.

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 ses événements synchronisés 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 stocke les jetons et synchronise à la prochaine passe.

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 sur une erreur de client manquant.

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

Section intitulée « Utiliser votre propre client Google (forks et auto-hébergement) »

Les versions publiées embarquent un client Google, si bien que la plupart des utilisateurs n’y touchent jamais. Fournissez le vôtre si vous compilez à partir du code source, exploitez votre propre serveur ou souhaitez que l’écran de consentement porte le nom de votre propre projet.

  1. Dans la Google Cloud Console, activez l’API Google Calendar et configurez l’écran de consentement OAuth en ajoutant les portées calendar.readonly, openid et email. Tant que l’application n’est pas vérifiée, ajoutez-vous comme utilisateur test. Ajouter calendar.events sur l’écran de consentement ne permet pas de répondre aux invitations — Control Center ne demande jamais cette portée.
  2. Créez un ID client OAuth dont le type d’application est TVs and limited input devices, puis copiez à la fois l’identifiant client et le secret client.
  3. Fournissez-les soit au moment de la 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 » — sur votre propre serveur, cette option correspond donc à votre app.

Le secret client ne quitte jamais le serveur : aucune réponse RPC ne le transporte, et un compte connecté via le client propre au serveur stocke un marqueur plutôt qu’une copie de la paire ; le faire tourner se résume donc à redémarrer avec une nouvelle valeur.

Symptôme Cause probable
La boîte de dialogue ne propose aucune option intégrée Cette version n’embarque 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 web
invalid_client renvoyé par Google Le client n’est pas de type TVs and limited input devices, ou l’identifiant et le secret proviennent de clients différents
L’approbation réussit mais la synchronisation reste vide Votre compte n’est pas un utilisateur test sur l’écran de consentement, ou calendar.readonly n’a pas été accordée
Le code expire avant que vous ne 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 sur un avertissement de rafraîchissement 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