Conectează un Google Calendar
Acest ghid îți arată cum să conectezi Google Calendar la un spațiu de lucru. Conectarea este proprie fiecărui spațiu de lucru: sincronizează evenimentele acelui spațiu în Control Center, doar în citire. Vezi Calendar și programare pentru imaginea completă.
Conectează un cont
Secțiune intitulată „Conectează un cont”- Deschide Calendar în bara laterală.
- Apasă Adaugă un cont de calendar în bara laterală a calendarului. (Aceeași secțiune se află în Setări → Spațiu de lucru → Profil și identitate, sub Google Calendar.)
- Alege cum să autorizezi:
- Folosește aplicația Google a Control Center — nimic de configurat. Aceasta este opțiunea implicită când build-ul tău vine cu una.
- Folosește propriul client Google Cloud — lipește un id de client și un secret din propriul proiect (vezi Adu-ți propriul client Google).
- Apasă Conectează Google Calendar. Dialogul afișează un cod scurt și un link către pagina de dispozitiv a Google.
- Deschide acea pagină pe orice dispozitiv, introdu codul și aprobă accesul solicitat. Dialogul se închide singur, iar evenimentele tale încep să se sincronizeze.
Serverul, nu dispozitivul tău, rulează acest schimb și păstrează tokenul de reîmprospătare rezultat — de aceea codul se aprobă pe „orice dispozitiv”, nu în această aplicație anume.
Contul este conectat doar la spațiul de lucru activ. Schimbă spațiul de lucru și vei vedea în schimb calendarele acelui spațiu.
Fluxul de conectare solicită calendar.readonly plus adresa ta de e-mail —
aceleași domenii pentru aplicația integrată și pentru un client pe care îl
lipești. Control Center citește evenimentele; nu creează, nu editează, nu șterge
și nu răspunde la invitații pe Google.
Cum funcționează sincronizarea
Secțiune intitulată „Cum funcționează sincronizarea”Serverul deține programul: parcurge conturile conectate ale fiecărui spațiu de lucru la fiecare două minute și scrie evenimentele în baza de date a spațiului de lucru. Clienții nu vorbesc niciodată cu Google — citesc ce a scris serverul.
Parcurgerea este incrementală. Prima trecere pentru fiecare calendar preia o fereastră glisantă (60 de zile în urmă, 90 de zile înainte) și captează tokenul de sincronizare al Google; trecerile ulterioare prezintă acel token și primesc doar ce s-a schimbat, ceea ce face sustenabilă o cadență de două minute. Fereastra este reancorată printr-o sincronizare completă la fiecare 24 de ore și ori de câte ori Google invalidează tokenul.
Tokenurile de reîmprospătare stau pe server, în secrets.json, în directorul de
date al serverului, scrise cu acces doar pentru proprietar (0600) — nu în
keychain-ul sistemului de operare și niciodată pe un dispozitiv client.
Conectează mai multe conturi
Secțiune intitulată „Conectează mai multe conturi”Un spațiu de lucru poate conecta mai multe conturi Google (de exemplu, unul de serviciu și unul personal). Repetă pasul de conectare pentru fiecare; evenimentele lor se comasează în aceleași vizualizări de lună / săptămână / agendă. Fiecare cont se sincronizează și se reîmprospătează independent, iar fiecare poate fi deconectat separat.
Reconectează un cont expirat
Secțiune intitulată „Reconectează un cont expirat”Dacă Google invalidează definitiv tokenul unui cont (o sesiune revocată sau expirată de mult timp), sincronizarea se oprește și Control Center afișează un banner Reconectează pe calendar, plus o notificare pe desktop. Apasă Reconectează și aprobă un cod nou; bannerul dispare la următoarea sincronizare reușită.
Deconectează un cont
Secțiune intitulată „Deconectează un cont”Din bara laterală a calendarului (sau Setări → Spațiu de lucru → Profil și identitate), apasă Deconectează pe cont. Aceasta șterge evenimentele sincronizate și curăță tokenurile stocate pe server.
Conectează de pe un server headless
Secțiune intitulată „Conectează de pe un server headless”Un server fără interfață grafică conectează același cont din propriul terminal:
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \ cc_server calendar connect --data-dir <dir> --workspace <workspace-id>Afișează un cod și un URL, așteaptă aprobarea, apoi stochează tokenurile și sincronizează la următoarea parcurgere.
O construcție din surse nu include niciun client Google, așa că id-ul și
secretul sunt obligatorii — setează GOOGLE_OAUTH_CLIENT_ID și
GOOGLE_OAUTH_CLIENT_SECRET. Nu există un flag --google-client-id (flag-urile
necunoscute sunt ignorate). Fără perechea de variabile de mediu, comanda se
încheie cu o eroare de client lipsă.
Adu-ți propriul client Google (fork-uri și auto-găzduire)
Secțiune intitulată „Adu-ți propriul client Google (fork-uri și auto-găzduire)”Build-urile de lansare includ un client Google, așa că majoritatea oamenilor nu ating niciodată acest subiect. Adu-ți propriul client dacă construiești din surse, rulezi propriul server sau vrei ca ecranul de consimțământ să numească propriul proiect.
- În Google Cloud Console, activează Google Calendar API și configurează ecranul de consimțământ OAuth, adăugând domeniile
calendar.readonly,openidșiemail. Cât timp aplicația nu este verificată, adaugă-te ca utilizator de test. Adăugarea luicalendar.eventspe ecranul de consimțământ nu activează RSVP — Control Center nu solicită niciodată acel domeniu. - Creează un ID client OAuth cu tipul de aplicație TVs and limited input devices și copiază atât id-ul de client, cât și secretul de client.
- Furnizează-le fie per conectare (alege Folosește propriul client Google Cloud în dialog), fie la nivel de server cu
GOOGLE_OAUTH_CLIENT_IDșiGOOGLE_OAUTH_CLIENT_SECRET.
O pereche la nivel de server o înlocuiește pe cea integrată peste tot, inclusiv în spatele opțiunii „folosește aplicația Google a Control Center” — așa că pe propriul tău server, acea opțiune este aplicația ta.
Secretul de client nu părăsește niciodată serverul: niciun răspuns RPC nu îl conține, iar un cont conectat prin clientul propriu al serverului stochează un marcaj în loc de o copie a perechii, așa că rotirea lui înseamnă doar o repornire cu o valoare nouă.
Depanare
Secțiune intitulată „Depanare”| Simptom | Cauză probabilă |
|---|---|
| Dialogul nu oferă nicio opțiune integrată | Această construcție nu include niciun client Google (o construcție din surse) sau serverul a fost pornit cu doar o jumătate a perechii. Atât id-ul, cât și secretul sunt obligatorii |
invalid_scope la pornirea fluxului |
Calendar nu este permis pentru un client cu cod de dispozitiv în acel proiect Cloud. Folosește în schimb un proiect cu client loopback sau web |
invalid_client de la Google |
Clientul nu este un client de tip TVs and limited input devices sau id-ul și secretul provin din clienți diferiți |
| Aprobarea reușește, dar sincronizarea este goală | Contul tău nu este utilizator de test pe ecranul de consimțământ sau calendar.readonly nu a fost acordat |
| Codul expiră înainte să îl aprobi | Codurile de dispozitiv sunt de scurtă durată. Pornește din nou conectarea pentru unul nou |
| „Nu s-a putut actualiza răspunsul” la un RSVP | Comportament așteptat: fluxul de conectare nu solicită niciodată calendar.events |
| Sincronizarea se oprește cu un avertisment de reîmprospătare în jurnalul serverului | Contul a fost conectat cu un client care nu mai este configurat. Reconectează contul sau restaurează id-ul și secretul acelui client |
Ghiduri conexe
Secțiune intitulată „Ghiduri conexe”- Înregistrează și rezumă o întâlnire: transformă un eveniment într-o înregistrare
- Rulează un server headless: unde stau tokenurile și programul de sincronizare
- Configurează integrarea GitHub