Kişilerinizi, Google'ın CardDAV protokolünü kullanarak görüntüleyebilir ve yönetebilirsiniz.
Kişiler, kullanıcının Google Hesabında depolanır. Çoğu Google hizmeti, kişi listesine erişebilir. İstemci uygulamanız yeni kişiler oluşturmak, mevcut kişileri düzenlemek veya silmek ve belirli kriterlerle eşleşen kişileri sorgulamak için CardDAV API'sini kullanabilir.
Özellikler
Tam spesifikasyon uygulanmasa da Apple iOSTM Kişiler ve macOS gibi birçok istemci doğru şekilde birlikte çalışabilir.
İlgili her spesifikasyon için Google'ın CardDAV desteği aşağıdaki gibidir:
- rfc2518: Dağıtılmış Yazma için HTTP Uzantıları (WebDAV)
GET
,PUT
,DELETE
,OPTIONS
vePROPFIND
HTTP yöntemlerini destekler.LOCK
,UNLOCK
,COPY
,MOVE
veyaMKCOL
HTTP yöntemlerini desteklemez.- Rastgele (kullanıcı tanımlı) WebDAV özelliklerini desteklemez.
- WebDAV Erişim Denetimi'ni (rfc3744) desteklemez.
- rfc5995: WebDAV Koleksiyonlarına Üye Eklemek için POST'u Kullanma
- Kimlik belirtmeden yeni kişiler oluşturmayı destekler.
- rfc6352: CardDAV: Web'de Dağıtılmış Yazma ve Sürüm Oluşturmaya Yönelik vCard Uzantıları (WebDAV)
REPORT
HTTP yöntemini destekler, ancak tanımlanan tüm raporlar uygulanmaz.- Ana koleksiyon ve kişiler koleksiyonu sağlanmasını destekler.
- rfc6578: WebDAV için Koleksiyon Senkronizasyonu
- İstemci uygulamaları, ilk senkronizasyondan sonra bu çalışma moduna geçmelidir.
- rfc6749: OAuth 2.0 Yetkilendirme Çerçevesi ve
rfc6750: OAuth 2.0 Yetkilendirme Çerçevesi: Hamiline Ait Jeton Kullanımı
- OAuth 2.0 HTTP Kimlik Doğrulaması kullanarak CardDAV istemci programlarının kimlik doğrulamasını destekler. Google, başka hiçbir kimlik doğrulama yöntemini desteklemez. Kişi verilerinin güvenliği için CardDAV bağlantılarının HTTPS kullanması zorunludur.
- rfc6764: WebDAV'daki Uzantıları Takvimleme Hizmetlerini Bulma (CalDAV) ve vCard Uzantılarını WebDAV'da (CardDAV) Bulma
- CardDAV URL'lerinin önyüklemesi rfc6764'ün 6. bölümüne uygun şekilde gerçekleştirilmelidir.
- CardDAV ve CalDAV spesifikasyonları arasında paylaşılan caldav-ctag-02: CalDAV'daki Takvim Koleksiyonu Varlık Etiketi (CTag) özelliğini destekler.
ctag
kişileri,ETag
kaynağı gibidir; kişi adres defterindeki herhangi bir şey değiştiğinde değişir. Bu sayede istemci programı, değiştirilen kişileri senkronize etmesi gerekmediğini hızlı bir şekilde belirleyebilir. - Google, kişi kodlama biçimi olarak VCard 3.0'ı kullanır. Bkz. rfc6350: VCard 3.0.
Google CardDAV için OAuth 2.0 gerekir
Google'ın CardDAV arayüzü için OAuth 2.0 gerekir. Google API'lerine erişmek için OAuth 2.0'ı kullanma hakkında bilgi edinmek için aşağıdaki bağlantıları verilen belgelere bakın:
Google'ın CardDAV sunucusuna bağlanma
CardDAV protokolü, adres defteri ve kişi kaynakları URI'larının bulunmasını sağlar. İstediğiniz zaman değişebilecekleri için hiçbir URI'ye kod gömmemelisiniz.
İstemci uygulamaları HTTPS kullanmalıdır ve kullanıcının Google hesabı için OAuth 2.0
kimlik doğrulaması sağlanmalıdır. CardDAV sunucusu, Google hesabının OAuth 2.0 kimlik doğrulamasıyla HTTPS üzerinden ulaşmadığı ve uygulamanız DevConsole'da kayıtlı olduğu sürece isteklerin kimliğini doğrulamaz. Temel kimlik doğrulamayla veya bir Google hesabıyla eşleşmeyen bir e-posta/şifre ile HTTP üzerinden bağlanma girişimleri, HTTP 401 Unauthorized
yanıt koduyla sonuçlanır.
CardDAV'ı kullanmak için istemci programınızın başlangıçta aşağıdaki cihazlarda bir HTTP PROPFIND
işlemi gerçekleştirerek standart keşif yoluna bağlanması gerekir:
https://www.googleapis.com/.well-known/carddav
Bir Adres Defteri Kaynağı'na yönlendirildikten (HTTP 301
) sonra istemci programınız, DAV:current-user-principal
, DAV:principal-URL
ve addressbook-home-set
özelliklerini keşfetmek için bu kaynakta bir PROPFIND
işlemi gerçekleştirebilir. Daha sonra müşteri programınız, addressbook-home-set
üzerinde bir PROPFIND
işlemi yapıp addressbook
ile collection
kaynaklarını arayarak ana adres defterini keşfedebilir. Bu sürecin tam açıklaması
bu belgenin kapsamı dışındadır. Daha fazla ayrıntı için rfc6352'ye bakın.
İyi bilinen URI'daki bir PROPFIND
aracılığıyla HTTP 301
yanıtında döndürülen yönlendirme yolu, rfc6764'e göre kalıcı olarak önbelleğe alınmamalıdır. Cihazlar, önbelleğe alınan yolun hâlâ güncel olup olmadığını doğrulamak ve yol değişirse yeniden senkronize etmek için iyi bilinen URI keşfini düzenli olarak yeniden denemelidir. Google, 2-4 haftada bir fiyat önerisinde bulunur.
Kaynaklar
CardDAV, REST kavramlarını kullanır. İstemci uygulamaları, URI'ları tarafından belirlenen kaynaklar üzerinde işlem yapar. Mevcut URI yapısı, geliştiricilerin bir sonraki bölümde yer alan kavramları anlamalarına yardımcı olmak için burada belirtilmiştir. Yapı değişebilir ve koda gömülmemelidir. Bunun yerine, kaynaklar RFC'ye göre keşfedilmelidir.
- Müdür
- https://www.googleapis.com/carddav/v1/principals/
userEmail
- https://www.googleapis.com/carddav/v1/principals/
- Ev Seti
- https://www.googleapis.com/carddav/v1/principals/
userEmail
/lists
- https://www.googleapis.com/carddav/v1/principals/
- Adres Defteri
- https://www.googleapis.com/carddav/v1/principals/
userEmail
/lists/default
- https://www.googleapis.com/carddav/v1/principals/
- İletişim
- https://www.googleapis.com/carddav/v1/principals/
userEmail
/lists/default/contactId
- https://www.googleapis.com/carddav/v1/principals/
Kişileri Senkronize Etme
Aşağıda, desteklenen işlemlerin genel bir açıklaması yer almaktadır. Geliştiriciler, ilgili RFC'deki ayrıntıları aramalıdır. İstekler ve yanıtlar çoğunlukla XML olarak kodlanır. Senkronizasyon için istemci uygulamaları tarafından kullanılan ana işlemler şunlardır:
- CTag'i kullanma
- İstemci programları, sunucuda herhangi bir kişinin değişip değişmediğini ve dolayısıyla bir senkronizasyon gerekip gerekmediğini belirlemek için Adres Defteri kaynağındaki
getctag
PROPFIND
isteğini kullanır. İletişim bilgileri değişirse bu özelliğin değeri mutlaka değişir. İstemci uygulamaları bu değeri depolamalı ve yalnızca ilk senkronizasyonda ve birsync-token
geçersiz kılındığında yedek olarak kullanmalıdır.getctag
özelliği için düzenli olarak yoklama yapmak kısıtlamaya neden olur.
- İstemci programları, sunucuda herhangi bir kişinin değişip değişmediğini ve dolayısıyla bir senkronizasyon gerekip gerekmediğini belirlemek için Adres Defteri kaynağındaki
- Senkronizasyon jetonunu kullanma
- İstemci programları, mevcut durumunu temsil eden
sync-token
öğesini almak için Adres Defteri'ndekisync-token
PROPFIND
isteğini kullanır. İstemci uygulamaları bu değeri depolamalı ve son gönderilensync-token
tarihinden bu yana yapılan değişiklikleri belirlemek için düzenli aralıklarlasync-collection
REPORT
istekleri göndermelidir. Verilen jetonlar 29 gün boyunca geçerlidir veREPORT
yanıtı yeni birsync-token
içerir.
- İstemci programları, mevcut durumunu temsil eden
- ETag'leri kullanma
- İstemci uygulamaları, Adres Defteri kaynağında
getetag
PROPFIND
isteği yayınlar (üst bilgisiDEPTH_1
ile aynı olur). İstemci programı, her kişininETag
değerini koruyarakETag
kişileri değiştirilen kişilerin değerini isteyebilir.DEPTH
- İstemci uygulamaları, Adres Defteri kaynağında
- Kişileri alma
- İstemci uygulamaları, kişileri
addressbook-multiget
REPORT
isteği göndererek alır. Kişi URI'lerinin bir listesi verildiğinde, rapor istenen tüm kişileri VCard 3.0 değerleri olarak döndürür. Her giriş, kişi için birETag
içerir.
- İstemci uygulamaları, kişileri
- Kişi ekleme
- İstemci uygulamaları, yeni kişiyle VCard 3.0 biçiminde bir
POST
isteği gönderir. Yanıtta, yeni kişinin kimliği yer alır.
- İstemci uygulamaları, yeni kişiyle VCard 3.0 biçiminde bir
- Kişiyi güncelleme
- İstemci uygulamaları, güncellenmiş kişi ile VCard 3.0 biçiminde bir
PUT
isteği gönderir. Kişi, adres defterinde zaten varsa güncellenir. - İstemci uygulamaları, kişinin bilinen
ETag
kodunu içeren birIf-Match
üstbilgisi içermelidir. Sunucudaki mevcutETag
, istemci programı tarafından gönderilenETag
değerinden farklıysa sunucuPUT
isteğini (HTTP 412
ile) reddeder. Bu, güncellemelerin iyimser şekilde serileştirilmesine olanak tanır.
- İstemci uygulamaları, güncellenmiş kişi ile VCard 3.0 biçiminde bir
- Kişi silme
- İstemci uygulamaları, bir kişiyi kişi URI'sına karşı bir
DELETE
isteği göndererek siler.
- İstemci uygulamaları, bir kişiyi kişi URI'sına karşı bir