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.
Connecter un compte
Section intitulée “Connecter un compte”- Ouvrez Calendrier dans la barre latérale.
- 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.)
- 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).
- Cliquez sur Connecter Google Calendar. La boîte de dialogue affiche un court code et un lien vers la page d’appareil de Google.
- 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.
Comment fonctionne la synchronisation
Section intitulée “Comment fonctionne la synchronisation”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.
Connecter plusieurs comptes
Section intitulée “Connecter plusieurs comptes”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é.
Reconnecter un compte expiré
Section intitulée “Reconnecter un compte expiré”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.
Déconnecter un compte
Section intitulée “Déconnecter un compte”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.
Se connecter depuis un serveur sans interface
Section intitulée “Se connecter depuis un serveur sans interface”Un serveur sans interface graphique connecte le même compte depuis son propre 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.
- Dans la console Google Cloud, activez Google Calendar API et configurez l’OAuth consent screen, en y ajoutant les portées
calendar.readonly,openidetemail. Tant que l’app n’est pas vérifiée, ajoutez-vous comme test user. Ajoutercalendar.eventsà cet écran de consentement n’active pas les RSVP — Control Center ne demande jamais cette portée. - 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.
- 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_IDetGOOGLE_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.
Dépannage
Section intitulée “Dépannage”| 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 |
Guides connexes
Section intitulée “Guides connexes”- Enregistrer et résumer une réunion : transformer un événement en enregistrement
- Exécuter un serveur sans interface : où résident les jetons et le calendrier de synchronisation
- Configurer l’intégration GitHub