Přeskočit na obsah

Připojte Google Calendar

Tenhle návod ukáže, jak připojit Google Calendar k pracovnímu prostoru. Váže se na pracovní prostor: události toho prostoru se do Control Center synchronizují jen ke čtení. Jak to funguje celé, popisuje Kalendář a plánování.

  1. V postranním panelu otevři Kalendář.
  2. V postranním panelu kalendáře klikni na Přidat účet kalendáře. (Stejná sekce je v Nastavení → Pracovní prostor → Profil a identita, pod Google Calendar.)
  3. Zvol způsob autorizace:
    • Použít Google aplikaci Control Center — nic nenastavuješ. To je výchozí volba, když sestavení klienta obsahuje.
    • Použít vlastní klienta Google Cloud — vlož client id a secret z vlastního projektu (viz Vlastní klient Google).
  4. Klikni na Připojit Google Calendar. Dialog ukáže krátký kód a odkaz na stránku Google pro kód zařízení.
  5. Tu stránku otevři na libovolném zařízení, zadej kód a schval požadovaný přístup. Dialog se zavře sám a události se začnou synchronizovat.

Výměnu provede server a výsledný refresh token si nechá. Proto kód schvaluješ na „libovolném zařízení“, ne přímo v téhle aplikaci.

Účet je připojený jen k aktivnímu pracovnímu prostoru. Přepni pracovní prostor a uvidíš kalendáře toho, do kterého jsi přešel.

Připojení žádá calendar.readonly a tvůj e-mail. Stejné scopes platí pro vestavěnou aplikaci i pro klienta, kterého vložíš. Control Center události čte. Nevytváří je, neupravuje, nemaže ani na pozvánky na Google neodpovídá.

Jak synchronizace funguje

Sekce “Jak synchronizace funguje”

Server řídí harmonogram: každé dvě minuty projde připojené účty všech pracovních prostorů a události zapíše do databáze daného prostoru. Klienti čtou to, co zapsal server. S Googlem komunikuje on.

Průchod je přírůstkový. První průchod každého kalendáře stáhne posuvné okno (60 dní zpět, 90 dní dopředu) a uloží sync token od Google. Další průchody ten token předloží a dostanou jen to, co se změnilo, proto dvouminutový interval vyjde levně. Okno se znovu ukotví plnou synchronizací každých 24 hodin a kdykoli Google token zneplatní.

Refresh tokeny leží na serveru v secrets.json v datovém adresáři serveru, zapsané s právy jen pro vlastníka (0600). Nejsou v klíčence operačního systému a nikdy na zařízení klienta.

Pracovní prostor může připojit několik účtů Google (třeba pracovní a osobní). Krok připojení zopakuj u každého; události se sloučí do stejných zobrazení měsíce, týdne a agendy. Každý účet se synchronizuje a obnovuje samostatně a každý jde odpojit zvlášť.

Znovu připoj prošlý účet

Sekce “Znovu připoj prošlý účet”

Když Google token účtu trvale zneplatní (zrušená nebo dlouho prošlá relace), synchronizace se zastaví. Control Center na kalendáři ukáže banner Znovu připojit a pošle oznámení na plochu. Klikni na Znovu připojit a schval nový kód. Banner zmizí při další úspěšné synchronizaci.

V postranním panelu kalendáře (nebo v Nastavení → Pracovní prostor → Profil a identita) klikni u účtu na Odpojit. Smaže synchronizované události toho účtu a na serveru vymaže uložené tokeny.

Připoj z bezhlavého serveru

Sekce “Připoj z bezhlavého serveru”

Server bez připojeného grafického rozhraní připojí stejný účet z vlastního terminálu:

Terminál
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \
cc_server calendar connect --data-dir <dir> --workspace <workspace-id>

Vypíše kód a URL, počká na schválení, uloží tokeny a synchronizuje při dalším průchodu.

Sestavení ze zdrojů žádného klienta Google neobsahuje, takže id a secret jsou povinné. Nastav GOOGLE_OAUTH_CLIENT_ID a GOOGLE_OAUTH_CLIENT_SECRET. Příznak --google-client-id neexistuje (neznámé příznaky se ignorují). Bez dvojice v prostředí příkaz skončí chybou chybějícího klienta.

Vlastní klient Google (forky a self-hosting)

Sekce “Vlastní klient Google (forky a self-hosting)”

Vydaná sestavení klienta Google obsahují, takže většina lidí sem nesáhne. Vlastního si přines, když sestavuješ ze zdrojů, provozuješ vlastní server, nebo chceš, aby obrazovka souhlasu nesla jméno tvého projektu.

  1. V Google Cloud Console zapni Google Calendar API a nastav obrazovku souhlasu OAuth. Přidej scopes calendar.readonly, openid a email. Dokud aplikace není ověřená, přidej se jako testovací uživatel. Přidání calendar.events na obrazovku souhlasu RSVP nezapne. Control Center ten scope nikdy nežádá.
  2. Vytvoř OAuth client ID typu aplikace TVs and limited input devices a zkopíruj client id i client secret.
  3. Zadej je buď u jednoho připojení (v dialogu zvol Použít vlastní klienta Google Cloud), nebo pro celý server přes GOOGLE_OAUTH_CLIENT_ID a GOOGLE_OAUTH_CLIENT_SECRET.

Dvojice pro celý server nahradí vestavěnou všude, i za volbou „Použít Google aplikaci Control Center“. Na vlastním serveru je ta volba tvoje aplikace.

Secret klienta server neopustí: žádná odpověď RPC ho nenese a účet připojený přes vlastního klienta serveru uloží značku, ne kopii dvojice. Rotace je restart s novou hodnotou.

Projev Pravděpodobná příčina
Dialog nenabízí vestavěnou volbu Tohle sestavení žádného klienta Google neobsahuje (sestavení ze zdrojů), nebo server nastartoval jen s polovinou dvojice. ID i secret jsou povinné
invalid_scope při startu postupu Calendar pro klienta s device code v tomhle projektu Cloud povolený není. Použij místo toho projekt s loopback nebo webovým klientem
invalid_client od Google Klient není typu TVs and limited input devices, nebo id a secret patří různým klientům
Schválení projde, ale synchronizace je prázdná Účet není testovací uživatel na obrazovce souhlasu, nebo nebyl udělen calendar.readonly
Kód vyprší dřív, než ho schválíš Kódy zařízení platí krátce. Připojení spusť znovu, ať máš čerstvý
„Odpověď se nepodařilo aktualizovat“ u RSVP Očekávané: postup připojení scope calendar.events nikdy nežádá
Synchronizace se zastaví a log hlásí varování o obnově Účet byl připojený klientem, který už není nastavený. Účet znovu připoj, nebo vrať to client id a secret