Lewati ke konten

Hubungkan Google Calendar

Panduan ini menunjukkan cara menghubungkan Google Calendar ke ruang kerja. Koneksinya bersifat per ruang kerja: koneksi ini menyinkronkan acara ruang kerja tersebut ke Control Center, hanya-baca. Lihat Kalender dan penjadwalan untuk gambaran lengkapnya.

  1. Buka Kalender di bilah sisi.
  2. Klik Tambah akun kalender di bilah sisi kalender. (Bagian yang sama juga ada di Pengaturan → Ruang kerja → Profil & identitas, di bawah Google Calendar.)
  3. Pilih cara mengotorisasi:
    • Gunakan aplikasi Google Control Center — tidak ada yang perlu disiapkan. Ini default bila build Anda menyertakannya.
    • Gunakan klien Google Cloud saya sendiri — tempelkan client id dan secret dari proyek Anda sendiri (lihat Bawa klien Google Anda sendiri).
  4. Klik Hubungkan Google Calendar. Dialog menampilkan kode pendek dan tautan ke halaman perangkat Google.
  5. Buka halaman itu di perangkat mana pun, masukkan kodenya, lalu setujui akses yang diminta. Dialog menutup sendiri dan acara Anda mulai tersinkronisasi.

Server, bukan perangkat Anda, yang menjalankan pertukaran ini dan menyimpan token penyegaran yang dihasilkan — itulah sebabnya kode disetujui di “perangkat mana pun”, bukan khusus di aplikasi ini.

Akun terhubung hanya ke ruang kerja yang aktif. Berpindah ruang kerja, dan Anda akan melihat kalender ruang kerja itu sebagai gantinya.

Alur koneksi meminta calendar.readonly plus email Anda — scope yang sama untuk aplikasi bawaan maupun untuk klien yang Anda tempelkan. Control Center membaca acara; ia tidak membuat, mengubah, menghapus, atau menanggapi undangan di Google.

Server yang memegang jadwalnya: server menyapu akun yang terhubung di setiap ruang kerja setiap dua menit dan menuliskan acara ke basis data ruang kerja. Klien tidak pernah berbicara ke Google — klien membaca apa yang ditulis server.

Penyapuannya bersifat inkremental. Lintasan pertama per kalender mengambil jendela bergulir (60 hari ke belakang, 90 hari ke depan) dan menangkap token sinkronisasi Google; lintasan berikutnya menyodorkan token itu dan hanya menerima apa yang berubah, itulah yang membuat irama dua menit terjangkau. Jendela ditambatkan ulang dengan sinkronisasi penuh setiap 24 jam dan setiap kali Google membatalkan token tersebut.

Token penyegaran disimpan di sisi server dalam secrets.json di bawah direktori data server, ditulis hanya untuk pemiliknya (0600) — bukan di keychain OS dan tidak pernah di perangkat klien.

Sebuah ruang kerja dapat menghubungkan beberapa akun Google (misalnya kantor dan pribadi). Ulangi langkah koneksi untuk masing-masing; acara mereka digabungkan ke tampilan bulan / minggu / agenda yang sama. Setiap akun menyinkronkan dan menyegarkan diri secara independen, dan masing-masing dapat diputuskan sendiri.

Jika Google membatalkan token sebuah akun secara permanen (sesi yang dicabut atau sudah lama kedaluwarsa), sinkronisasi berhenti dan Control Center menampilkan banner Hubungkan ulang pada kalender, plus notifikasi desktop. Klik Hubungkan ulang dan setujui kode baru; banner hilang pada sinkronisasi berikutnya yang berhasil.

Dari bilah sisi kalender (atau Pengaturan → Ruang kerja → Profil & identitas), klik Putuskan pada akun tersebut. Tindakan ini menghapus acara tersinkronisasinya dan membersihkan token tersimpannya di server.

Server tanpa GUI terpasang menghubungkan akun yang sama dari terminalnya sendiri:

Jendela terminal
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \
cc_server calendar connect --data-dir <dir> --workspace <workspace-id>

Perintah ini mencetak kode dan URL, menunggu persetujuan, lalu menyimpan token dan menyinkronkan pada penyapuan berikutnya.

Build dari sumber tidak menyertakan klien Google, jadi id dan secret wajib diisi — setel GOOGLE_OAUTH_CLIENT_ID dan GOOGLE_OAUTH_CLIENT_SECRET. Tidak ada flag --google-client-id (flag yang tidak dikenal akan diabaikan). Tanpa pasangan lingkungan tersebut, perintah keluar dengan galat klien tidak ditemukan.

Bawa klien Google Anda sendiri (fork dan self-hosting)

Bagian berjudul “Bawa klien Google Anda sendiri (fork dan self-hosting)”

Build rilis disertai klien Google, jadi sebagian besar orang tidak perlu menyentuh ini. Bawa milik Anda sendiri jika Anda mem-build dari sumber, menjalankan server sendiri, atau ingin layar izin menyebut proyek Anda sendiri.

  1. Di Google Cloud Console, aktifkan Google Calendar API dan konfigurasikan OAuth consent screen, dengan menambahkan scope calendar.readonly, openid, dan email. Selagi aplikasi belum diverifikasi, tambahkan diri Anda sebagai test user. Menambahkan calendar.events di layar izin tidak mengaktifkan RSVP — Control Center tidak pernah meminta scope itu.
  2. Buat OAuth client ID dengan jenis aplikasi TVs and limited input devices dan salin client id serta client secret-nya.
  3. Pasok keduanya baik per koneksi (pilih Gunakan klien Google Cloud saya sendiri di dialog) maupun di seluruh server dengan GOOGLE_OAUTH_CLIENT_ID dan GOOGLE_OAUTH_CLIENT_SECRET.

Pasangan di seluruh server menggantikan pasangan bawaan di mana-mana, termasuk di balik opsi “gunakan aplikasi Google Control Center” — jadi di server Anda sendiri, opsi itu adalah aplikasi Anda.

Client secret tidak pernah meninggalkan server: tidak ada respons RPC yang membawanya dan akun yang terhubung melalui klien milik server menyimpan penanda alih-alih salinan pasangan itu, jadi merotasinya cukup dengan memulai ulang dengan nilai baru.

Gejala Kemungkinan penyebab
Dialog tidak menawarkan opsi bawaan Build ini tidak menyertakan klien Google (build dari sumber), atau server dijalankan dengan hanya separuh dari pasangan itu. Baik id maupun secret wajib diisi
invalid_scope saat memulai alur Calendar tidak diizinkan untuk klien kode perangkat di proyek Cloud itu. Gunakan proyek klien loopback atau web sebagai gantinya
invalid_client dari Google Klien bukan klien TVs and limited input devices, atau id dan secret-nya berasal dari klien yang berbeda
Persetujuan berhasil tetapi sinkronisasi kosong Akun Anda bukan test user di layar izin, atau calendar.readonly tidak diberikan
Kode kedaluwarsa sebelum Anda menyetujuinya Kode perangkat berumur pendek. Mulai koneksi lagi untuk mendapatkan kode baru
“Tidak dapat memperbarui respons Anda” pada RSVP Diharapkan: alur koneksi tidak pernah meminta calendar.events
Sinkronisasi berhenti dengan peringatan penyegaran di log server Akun dihubungkan dengan klien yang tidak lagi dikonfigurasi. Hubungkan ulang akun, atau pulihkan client id dan secret klien tersebut