Hoppa till innehåll

Anslut en Google Calendar

Den här guiden visar hur du ansluter Google Calendar till en arbetsyta. Anslutningen gäller per arbetsyta: den synkar arbetsytans händelser till Control Center, skrivskyddat. Se Kalender och schemaläggning för hela bilden.

  1. Öppna Kalender i sidofältet.
  2. Klicka på Lägg till kalenderkonto i kalenderns sidofält. (Samma avsnitt finns i Inställningar → Arbetsyta → Profil och identitet, under Google Calendar.)
  3. Välj hur du vill auktorisera:
    • Använd Control Centers Google-app – inget att ställa in. Det här är standard när ditt bygge levereras med en.
    • Använd min egen Google Cloud-klient – klistra in ett klient-ID och en hemlighet från ditt eget projekt (se Ta med din egen Google-klient).
  4. Klicka på Anslut Google Calendar. Dialogen visar en kort kod och en länk till Googles enhetssida.
  5. Öppna sidan på valfri enhet, ange koden och godkänn den åtkomst som begärs. Dialogen stängs av sig själv och dina händelser börjar synkas.

Det är servern, inte din enhet, som kör det här utbytet och behåller den resulterande refresh-token – det är därför koden godkänns på “valfri enhet” i stället för i just den här appen.

Kontot ansluts endast till den aktiva arbetsytan. Byt arbetsyta och du ser i stället den arbetsytans kalendrar.

Anslutningsflödet begär calendar.readonly plus din e-postadress – samma behörighetsomfång för den inbyggda appen och för en klient som du klistrar in. Control Center läser händelser; det skapar, redigerar eller tar inte bort något och svarar inte på inbjudningar i Google.

Det är servern som äger schemat: den genomsöker varje arbetsytas anslutna konton varannan minut och skriver händelserna till arbetsytans databas. Klienterna pratar aldrig med Google – de läser det servern har skrivit.

Genomsökningen är inkrementell. Den första körningen per kalender hämtar ett rullande fönster (60 dagar bakåt, 90 dagar framåt) och fångar Googles synktoken; senare körningar presenterar den token och tar bara emot det som ändrats, vilket är det som gör en frekvens på två minuter överkomlig. Fönstret ankras om med en fullständig synk var 24:e timme och varje gång Google ogiltigförklarar token.

Refresh-tokens finns på serversidan i secrets.json under serverns datakatalog, skrivna med ägaren som enda behöriga (0600) – inte i operativsystemets nyckelring och aldrig på en klientenhet.

En arbetsyta kan ansluta flera Google-konton (till exempel jobb och privat). Upprepa anslutningssteget för varje konto; deras händelser slås samman i samma vyer för månad, vecka och agenda. Varje konto synkas och uppdateras oberoende av de andra och kan kopplas från var för sig.

Om Google ogiltigförklarar ett kontos token permanent (en återkallad eller länge sedan utgången session) upphör synkningen och Control Center visar en Återanslut-banderoll i kalendern, plus en skrivbordsavisering. Klicka på Återanslut och godkänn en ny kod; banderollen försvinner vid nästa lyckade synk.

I kalenderns sidofält (eller Inställningar → Arbetsyta → Profil och identitet) klickar du på Koppla från för kontot. Detta tar bort kontots synkade händelser och rensar dess lagrade tokens på servern.

En server utan grafiskt gränssnitt ansluter samma konto från sin egen terminal:

Terminalfönster
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \
cc_server calendar connect --data-dir <dir> --workspace <workspace-id>

Den skriver ut en kod och en URL, väntar på godkännande och lagrar sedan tokens och synkar vid nästa genomsökning.

Ett bygge från källkod levereras utan någon Google-klient, så klient-ID:t och hemligheten krävs – ange GOOGLE_OAUTH_CLIENT_ID och GOOGLE_OAUTH_CLIENT_SECRET. Det finns ingen flagga för --google-client-id (okända flaggor ignoreras). Utan miljövariabelparet avslutas kommandot med ett fel om saknad klient.

Släppta byggen levereras med en Google-klient, så de flesta behöver aldrig röra det här. Ta med din egen om du bygger från källkod, kör din egen server eller vill att samtycksskärmen ska visa ditt eget projekt.

  1. I Google Cloud Console aktiverar du Google Calendar API och konfigurerar OAuth consent screen och lägger till behörighetsomfången calendar.readonly, openid och email. Medan appen är overifierad lägger du till dig själv som test user. Att lägga till calendar.events på samtycksskärmen aktiverar inte RSVP – Control Center begär aldrig det omfånget.
  2. Skapa ett OAuth client ID av programtypen TVs and limited input devices och kopiera både klient-ID:t och klienthemligheten.
  3. Ange dem antingen per anslutning (välj Använd min egen Google Cloud-klient i dialogen) eller för hela servern med GOOGLE_OAUTH_CLIENT_ID och GOOGLE_OAUTH_CLIENT_SECRET.

Ett par som gäller för hela servern ersätter det inbyggda överallt, även bakom alternativet “använd Control Centers Google-app” – så på din egen server är det alternativet din app.

Klienthemligheten lämnar aldrig servern: inget RPC-svar innehåller den, och ett konto som ansluts via serverns egen klient lagrar en markör i stället för en kopia av paret, så att rotera den är bara en fråga om att starta om med ett nytt värde.

Symtom Trolig orsak
Dialogen erbjuder inget inbyggt alternativ Det här bygget levereras utan någon Google-klient (ett källkodsbygge), eller så startades servern med bara halva paret. Både klient-ID:t och hemligheten krävs
invalid_scope när flödet startas Calendar är inte tillåtet för en device-code-klient i det Cloud-projektet. Använd ett loopback- eller webbklientprojekt i stället
invalid_client från Google Klienten är inte en TVs and limited input devices-klient, eller så kommer klient-ID:t och hemligheten från olika klienter
Godkännandet lyckas men synken är tom Ditt konto är inte en test user på samtycksskärmen, eller så beviljades inte calendar.readonly
Koden hinner gå ut innan du godkänner den Device-koder är kortlivade. Starta anslutningen igen för att få en ny
“Kunde inte uppdatera ditt svar” vid en RSVP Väntat: anslutningsflödet begär aldrig calendar.events
Synken stannar med en refresh-varning i serverloggen Kontot anslöts med en klient som inte längre är konfigurerad. Återanslut kontot, eller återställ klient-ID:t och hemligheten