Połącz Google Calendar
Ten poradnik pokazuje, jak połączyć Kalendarz Google z obszarem roboczym. Połączenie działa w zakresie obszaru roboczego: synchronizuje wydarzenia tego obszaru roboczego do Control Center w trybie tylko do odczytu. Pełny obraz znajdziesz w sekcji Kalendarz i planowanie.
Połącz konto
Dział zatytułowany „Połącz konto”- Otwórz Kalendarz na pasku bocznym.
- Kliknij Dodaj konto kalendarza na pasku bocznym kalendarza. (Ta sama sekcja znajduje się w Ustawienia → Obszar roboczy → Profil i tożsamość, pod Kalendarz Google.)
- Wybierz sposób autoryzacji:
- Użyj aplikacji Google od Control Center — nic nie trzeba konfigurować. To ustawienie domyślne, gdy Twoja kompilacja zawiera taką aplikację.
- Użyj mojego własnego klienta Google Cloud — wklej identyfikator klienta i sekret z własnego projektu (zobacz Własny klient Google (forki i self-hosting)).
- Kliknij Połącz Kalendarz Google. W oknie dialogowym pojawia się krótki kod i link do strony weryfikacji Google.
- Otwórz tę stronę na dowolnym urządzeniu, wpisz kod i zatwierdź żądany dostęp. Okno dialogowe zamknie się samo, a Twoje wydarzenia zaczną się synchronizować.
Tę wymianę przeprowadza serwer, a nie Twoje urządzenie, i to on przechowuje powstały token odświeżania — dlatego kod zatwierdza się na „dowolnym urządzeniu”, a nie specjalnie w tej aplikacji.
Konto jest połączone tylko z aktywnym obszarem roboczym. Przełącz obszar roboczy, a zobaczysz kalendarze tego obszaru roboczego.
Przepływ łączenia żąda zakresu calendar.readonly oraz dostępu do Twojego adresu
e-mail — tych samych zakresów zarówno w przypadku aplikacji wbudowanej, jak i wklejonego
klienta. Control Center odczytuje wydarzenia; nie tworzy ich, nie edytuje, nie usuwa
ani nie odpowiada na zaproszenia w Google.
Jak działa synchronizacja
Dział zatytułowany „Jak działa synchronizacja”Serwer odpowiada za harmonogram: co dwie minuty przegląda połączone konta wszystkich obszarów roboczych i zapisuje wydarzenia w bazie danych obszaru roboczego. Klienci nigdy nie komunikują się z Google — odczytują to, co zapisał serwer.
Przegląd jest przyrostowy. Pierwsze przejście dla każdego kalendarza pobiera ruchome okno (60 dni wstecz, 90 dni w przód) i zapisuje token synchronizacji Google; kolejne przejścia przekazują ten token i otrzymują wyłącznie zmiany — właśnie dzięki temu rytm co dwie minuty jest opłacalny. Okno jest zakotwiczane od nowa przez pełną synchronizację co 24 godziny oraz za każdym razem, gdy Google unieważni token.
Tokeny odświeżania są przechowywane po stronie serwera w pliku secrets.json w
katalogu danych serwera, z uprawnieniami tylko dla właściciela (0600) — nie w
magazynie poświadczeń systemu operacyjnego i nigdy na urządzeniu klienta.
Połącz wiele kont
Dział zatytułowany „Połącz wiele kont”Obszar roboczy może połączyć kilka kont Google (na przykład służbowe i prywatne). Powtórz krok łączenia dla każdego z nich; ich wydarzenia scalają się w tych samych widokach miesiąca, tygodnia i agendy. Każde konto synchronizuje się i odświeża niezależnie, a każde można rozłączyć osobno.
Połącz ponownie wygasłe konto
Dział zatytułowany „Połącz ponownie wygasłe konto”Jeśli Google trwale unieważni token konta (unieważniona sesja lub sesja dawno wygasła), synchronizacja się zatrzymuje, a Control Center pokazuje w kalendarzu baner Połącz ponownie oraz powiadomienie na pulpicie. Kliknij Połącz ponownie i zatwierdź nowy kod; baner zniknie po następnej udanej synchronizacji.
Rozłącz konto
Dział zatytułowany „Rozłącz konto”Na pasku bocznym kalendarza (albo w Ustawienia → Obszar roboczy → Profil i tożsamość) kliknij Rozłącz przy koncie. Spowoduje to usunięcie zsynchronizowanych wydarzeń i wyczyszczenie zapisanych tokenów tego konta na serwerze.
Połącz z serwera headless
Dział zatytułowany „Połącz z serwera headless”Serwer bez podłączonego interfejsu graficznego łączy to samo konto ze swojego terminala:
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \ cc_server calendar connect --data-dir <dir> --workspace <workspace-id>Polecenie wyświetla kod i adres URL, czeka na zatwierdzenie, a następnie zapisuje tokeny i synchronizuje przy następnym przeglądzie.
Kompilacja ze źródeł nie zawiera żadnego klienta Google, więc identyfikator i
sekret są wymagane — ustaw GOOGLE_OAUTH_CLIENT_ID i GOOGLE_OAUTH_CLIENT_SECRET.
Nie ma flagi --google-client-id (nieznane flagi są ignorowane). Bez tej pary
zmiennych środowiskowych polecenie kończy się błędem braku klienta.
Własny klient Google (forki i self-hosting)
Dział zatytułowany „Własny klient Google (forki i self-hosting)”Kompilacje wydania zawierają klienta Google, więc większość osób nigdy tego nie potrzebuje. Użyj własnego, jeśli budujesz ze źródeł, prowadzisz własny serwer albo chcesz, aby na ekranie zgody widniała nazwa Twojego projektu.
- W konsoli Google Cloud włącz Google Calendar API i skonfiguruj ekran zgody OAuth, dodając zakresy
calendar.readonly,openidiemail. Dopóki aplikacja nie jest zweryfikowana, dodaj siebie jako użytkownika testowego. Dodanie zakresucalendar.eventsna ekranie zgody nie włącza RSVP — Control Center nigdy nie żąda tego zakresu. - Utwórz identyfikator klienta OAuth o typie aplikacji „TVs and limited input devices” i skopiuj zarówno identyfikator klienta, jak i sekret klienta.
- Podaj je albo przy pojedynczym łączeniu (wybierz w oknie dialogowym Użyj mojego własnego klienta Google Cloud), albo dla całego serwera przez
GOOGLE_OAUTH_CLIENT_IDiGOOGLE_OAUTH_CLIENT_SECRET.
Para ustawiona dla całego serwera zastępuje wbudowaną wszędzie, również za opcją „użyj aplikacji Google od Control Center” — więc na własnym serwerze ta opcja oznacza Twoją aplikację.
Sekret klienta nigdy nie opuszcza serwera: żadna odpowiedź RPC go nie przenosi, a konto połączone przez klienta samego serwera zapisuje znacznik, a nie kopię pary — więc jego rotacja sprowadza się do ponownego uruchomienia z nową wartością.
Rozwiązywanie problemów
Dział zatytułowany „Rozwiązywanie problemów”| Objaw | Prawdopodobna przyczyna |
|---|---|
| W oknie dialogowym nie ma opcji wbudowanej | Ta kompilacja nie zawiera klienta Google (kompilacja ze źródeł) albo serwer uruchomiono tylko z połową pary. Wymagane są zarówno identyfikator, jak i sekret |
invalid_scope przy rozpoczynaniu przepływu |
Kalendarz nie jest dozwolony dla klienta kodu urządzenia w tym projekcie Cloud. Użyj zamiast tego projektu z klientem loopback lub web |
invalid_client od Google |
Klient nie jest klientem typu „TVs and limited input devices” albo identyfikator i sekret pochodzą z różnych klientów |
| Zatwierdzenie się udaje, ale synchronizacja jest pusta | Twoje konto nie jest użytkownikiem testowym na ekranie zgody albo nie przyznano zakresu calendar.readonly |
| Kod wygasa, zanim go zatwierdzisz | Kody urządzenia są krótkotrwałe. Rozpocznij łączenie ponownie, aby otrzymać nowy |
| „Nie udało się zaktualizować odpowiedzi” przy RSVP | Oczekiwane: przepływ łączenia nigdy nie żąda zakresu calendar.events |
| Synchronizacja zatrzymuje się z ostrzeżeniem o odświeżaniu w logu serwera | Konto połączono klientem, który nie jest już skonfigurowany. Połącz konto ponownie albo przywróć identyfikator i sekret tego klienta |
Powiązane poradniki
Dział zatytułowany „Powiązane poradniki”- Nagraj i podsumuj spotkanie: zamień wydarzenie w nagranie
- Uruchom serwer headless: gdzie przechowywane są tokeny i gdzie działa harmonogram synchronizacji
- Skonfiguruj integrację GitHub