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.
Hubungkan akun
Bagian berjudul “Hubungkan akun”- Buka Kalender di bilah sisi.
- Klik Tambah akun kalender di bilah sisi kalender. (Bagian yang sama juga ada di Pengaturan → Ruang kerja → Profil & identitas, di bawah Google Calendar.)
- 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).
- Klik Hubungkan Google Calendar. Dialog menampilkan kode pendek dan tautan ke halaman perangkat Google.
- 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.
Cara sinkronisasi bekerja
Bagian berjudul “Cara sinkronisasi bekerja”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.
Hubungkan beberapa akun
Bagian berjudul “Hubungkan beberapa akun”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.
Hubungkan ulang akun yang kedaluwarsa
Bagian berjudul “Hubungkan ulang akun yang kedaluwarsa”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.
Putuskan akun
Bagian berjudul “Putuskan akun”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.
Hubungkan dari server headless
Bagian berjudul “Hubungkan dari server headless”Server tanpa GUI terpasang menghubungkan akun yang sama dari terminalnya sendiri:
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.
- Di Google Cloud Console, aktifkan Google Calendar API dan konfigurasikan OAuth consent screen, dengan menambahkan scope
calendar.readonly,openid, danemail. Selagi aplikasi belum diverifikasi, tambahkan diri Anda sebagai test user. Menambahkancalendar.eventsdi layar izin tidak mengaktifkan RSVP — Control Center tidak pernah meminta scope itu. - Buat OAuth client ID dengan jenis aplikasi TVs and limited input devices dan salin client id serta client secret-nya.
- Pasok keduanya baik per koneksi (pilih Gunakan klien Google Cloud saya sendiri di dialog) maupun di seluruh server dengan
GOOGLE_OAUTH_CLIENT_IDdanGOOGLE_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.
Pemecahan masalah
Bagian berjudul “Pemecahan masalah”| 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 |
Panduan terkait
Bagian berjudul “Panduan terkait”- Rekam dan ringkas rapat: ubah acara menjadi rekaman
- Jalankan server headless: tempat token dan jadwal sinkronisasi berada
- Siapkan integrasi GitHub