İçeriğe geç

Bir Google Calendar bağlama

Bu kılavuz, Google Calendar’ı bir çalışma alanına nasıl bağlayacağınızı gösterir. Bağlantı çalışma alanı başına kurulur: o çalışma alanının etkinliklerini Control Center’a salt okunur olarak eşitler. Tam resim için Takvim ve zamanlama sayfasına bakın.

  1. Kenar çubuğunda Takvim’i açın.
  2. Takvim kenar çubuğunda Takvim hesabı ekle’ye tıklayın. (Aynı bölüm Ayarlar → Çalışma alanı → Profil ve kimlik yolunda, Google Calendar altında da yer alır.)
  3. Nasıl yetkilendireceğinizi seçin:
    • Control Center’ın Google uygulamasını kullan — kurulacak bir şey yok. Yapınız bir tane içeriyorsa varsayılan budur.
    • Kendi Google Cloud istemcimi kullan — kendi projenizden bir istemci kimliği ve gizli anahtar yapıştırın (bkz. Kendi Google istemcinizi getirme).
  4. Google Calendar’ı bağla’ya tıklayın. İletişim kutusu kısa bir kod ve Google’ın cihaz sayfasına bir bağlantı gösterir.
  5. O sayfayı herhangi bir cihazda açın, kodu girin ve istenen erişimi onaylayın. İletişim kutusu kendiliğinden kapanır ve etkinlikleriniz eşitlenmeye başlar.

Bu alışverişi cihazınız değil sunucu yürütür ve ortaya çıkan yenileme token’ını saklar — kodun özellikle bu uygulamada değil de “herhangi bir cihazda” onaylanmasının nedeni budur.

Hesap yalnızca etkin çalışma alanına bağlanır. Çalışma alanını değiştirin, onun yerine o çalışma alanının takvimlerini görürsünüz.

Bağlantı akışı calendar.readonly ile birlikte e-posta adresinizi ister — yerleşik uygulama ve yapıştırdığınız istemci için aynı kapsamlar. Control Center etkinlikleri okur; Google’da etkinlik oluşturmaz, düzenlemez, silmez veya davetlere yanıt vermez.

Zamanlamanın sahibi sunucudur: her iki dakikada bir tüm çalışma alanlarının bağlı hesaplarını tarar ve etkinlikleri çalışma alanının veritabanına yazar. İstemciler Google’la hiç konuşmaz — sunucunun yazdıklarını okurlar.

Tarama artımlıdır. Takvim başına ilk geçiş kayan bir pencere çeker (60 gün geriye, 90 gün ileriye) ve Google’ın eşitleme token’ını yakalar; sonraki geçişler bu token’ı sunar ve yalnızca değişenleri alır — iki dakikalık bir tempoyu karşılanabilir kılan da budur. Pencere, her 24 saatte bir ve Google token’ı geçersiz kıldığında tam bir eşitlemeyle yeniden sabitlenir.

Yenileme token’ları sunucu tarafında, sunucunun veri dizinindeki secrets.json dosyasında yaşar ve yalnızca sahibinin erişebildiği biçimde (0600) yazılır — işletim sistemi anahtar zincirinde değil ve hiçbir zaman bir istemci cihazında değil.

Bir çalışma alanı birkaç Google hesabı bağlayabilir (örneğin iş ve kişisel). Her biri için bağlama adımını yineleyin; etkinlikleri aynı ay / hafta / ajanda görünümlerinde birleşir. Her hesap bağımsız olarak eşitlenir ve yenilenir ve her birinin bağlantısı kendi başına kesilebilir.

Google bir hesabın token’ını kalıcı olarak geçersiz kılarsa (iptal edilmiş veya süresi çoktan dolmuş bir oturum), eşitleme durur ve Control Center takvimde bir Yeniden bağlan banner’ı ile birlikte bir masaüstü bildirimi gösterir. Yeniden bağlan’a tıklayıp yeni bir kodu onaylayın; banner bir sonraki başarılı eşitlemede kaybolur.

Takvim kenar çubuğundan (veya Ayarlar → Çalışma alanı → Profil ve kimlik yolundan) hesaptaki Bağlantıyı kes’e tıklayın. Bu işlem, eşitlenmiş etkinliklerini siler ve sunucudaki saklı token’larını temizler.

Grafik arayüzü olmayan bir sunucu, aynı hesabı kendi terminalinden bağlar:

Terminal penceresi
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \
cc_server calendar connect --data-dir <dir> --workspace <workspace-id>

Bir kod ve bir URL yazdırır, onay bekler, ardından token’ları saklar ve bir sonraki taramada eşitler.

Kaynaktan bir derleme hiç Google istemcisi içermez, bu yüzden kimlik ve gizli anahtar zorunludur — GOOGLE_OAUTH_CLIENT_ID ve GOOGLE_OAUTH_CLIENT_SECRET değerlerini ayarlayın. --google-client-id diye bir bayrak yoktur (bilinmeyen bayraklar yok sayılır). Ortam değişkeni çifti olmadan komut, eksik istemci hatasıyla çıkar.

Kendi Google istemcinizi getirme (çatallar ve kendi barındırma)

Bölüm başlığı “Kendi Google istemcinizi getirme (çatallar ve kendi barındırma)”

Yayımlanan derlemeler bir Google istemcisiyle gelir, bu yüzden çoğu kişi buna hiç dokunmaz. Kaynaktan derliyorsanız, kendi sunucunuzu çalıştırıyorsanız veya onay ekranının kendi projenizin adını taşımasını istiyorsanız kendi istemcinizi getirin.

  1. Google Cloud Console üzerinde Google Calendar API’yi etkinleştirin ve calendar.readonly, openid ile email kapsamlarını ekleyerek OAuth onay ekranını yapılandırın. Uygulama doğrulanmamışken kendinizi bir test kullanıcısı olarak ekleyin. Onay ekranında calendar.events eklemek davetlere yanıt vermeyi etkinleştirmez — Control Center bu kapsamı hiç istemez.
  2. Uygulama türü TV’ler ve sınırlı girdi cihazları olan bir OAuth istemci kimliği oluşturun ve hem istemci kimliğini hem de istemci gizli anahtarını kopyalayın.
  3. Bunları ya her bağlantıda (iletişim kutusunda Kendi Google Cloud istemcimi kullan’ı seçin) ya da GOOGLE_OAUTH_CLIENT_ID ve GOOGLE_OAUTH_CLIENT_SECRET ile sunucu genelinde sağlayın.

Sunucu genelinde tanımlı bir çift, yerleşik olanın yerini her yerde alır — “Control Center’ın Google uygulamasını kullan” seçeneğinin arkasında bile — yani kendi sunucunuzda o seçenek sizin uygulamanızdır.

İstemci gizli anahtarı sunucudan asla ayrılmaz: hiçbir RPC yanıtı onu taşımaz ve sunucunun kendi istemcisi üzerinden bağlanan bir hesap, çiftin bir kopyası yerine bir işaretçi saklar; dolayısıyla onu döndürmek, yeni bir değerle yeniden başlatmaktan ibarettir.

Belirti Olası neden
İletişim kutusu yerleşik bir seçenek sunmuyor Bu yapım hiçbir Google istemcisi içermiyor (kaynaktan derleme) ya da sunucu çiftin yalnızca bir yarısıyla başlatıldı. Hem kimlik hem de gizli anahtar gereklidir
Akış başlatılırken invalid_scope Calendar, o Cloud projesinde bir cihaz kodu istemcisi için izinli değildir. Bunun yerine loopback ya da web istemcisi olan bir proje kullanın
Google’dan invalid_client İstemci, TV’ler ve sınırlı girdi cihazları türünde bir istemci değil ya da kimlik ile gizli anahtar farklı istemcilere ait
Onay başarılı ama eşitleme boş Hesabınız onay ekranında bir test kullanıcısı değil ya da calendar.readonly verilmedi
Kod, siz onaylamadan önce süresi doluyor Cihaz kodları kısa ömürlüdür. Yeni bir kod için bağlantıyı yeniden başlatın
Bir davete yanıt verirken “Yanıtınız güncellenemedi” Beklenen bir durumdur: bağlantı akışı calendar.events kapsamını hiç istemez
Eşitleme, sunucu günlüğünde bir yenileme uyarısıyla duruyor Hesap, artık yapılandırılmamış bir istemciyle bağlanmıştı. Hesabı yeniden bağlayın ya da o istemci kimliğini ve gizli anahtarını geri yükleyin