Anda dapat melihat dan mengelola kontak menggunakan protokol CardDAV Google.
Kontak disimpan di Akun Google pengguna; sebagian besar layanan Google memiliki akses ke daftar kontak. Aplikasi klien Anda dapat menggunakan CardDAV API untuk membuat kontak baru, mengedit atau menghapus kontak yang ada, dan membuat kueri untuk kontak yang cocok dengan kriteria tertentu.
Spesifikasi
Spesifikasi lengkap tidak diterapkan, tetapi banyak klien seperti Kontak Apple iOS™ dan macOS harus beroperasi dengan benar.
Untuk setiap spesifikasi yang relevan, dukungan CardDAV Google adalah sebagai berikut:
- rfc2518: HTTP Extensions for Distributed Authoring (WebDAV)
- Mendukung metode HTTP
GET,PUT,DELETE,OPTIONS, danPROPFIND. - Tidak mendukung metode HTTP
LOCK,UNLOCK,COPY,MOVE, atauMKCOL. - Tidak mendukung properti WebDAV arbitrer (ditentukan pengguna).
- Tidak mendukung Kontrol Akses WebDAV (rfc3744).
- Mendukung metode HTTP
- rfc5995: Menggunakan POST untuk Menambahkan Anggota ke Koleksi WebDAV
- Mendukung pembuatan kontak baru tanpa menentukan ID.
- rfc6352: CardDAV: Ekstensi Programs Dengan Perluasan Web, serta
Pembuatan Versi (WebDAV)
- Mendukung metode HTTP
REPORT, tetapi tidak semua laporan yang ditentukan diimplementasikan. - Dukungan penyediaan kumpulan akun utama dan kumpulan kontak.
- Mendukung metode HTTP
- rfc6578: Collection Synchronization for WebDAV
- Aplikasi klien harus beralih ke mode operasi ini setelah sinkronisasi awal.
- rfc6749: Framework Otorisasi OAuth 2.0 dan
rfc6750: Framework Otorisasi OAuth 2.0: Penggunaan Token Pembawa
- Mendukung autentikasi program klien CardDAV menggunakan Autentikasi HTTP OAuth 2.0. Google tidak mendukung metode autentikasi lainnya. Demi keamanan data kontak, kami mewajibkan koneksi CardDAV untuk menggunakan HTTPS.
- rfc6764: Menemukan Layanan untuk Ekstensi Kalender ke WebDAV (CalDAV) dan Ekstensi Vitals ke WebDAV (CardDAV)
- Bootstrapping URL CardDAV harus dilakukan sesuai dengan bagian 6 rfc6764.
- Mendukung
caldav-ctag-02: Calendar Collection Entity Tag (CTag) di CalDAV,
yang digunakan bersama oleh spesifikasi CardDAV dan CalDAV. Kontak
ctagseperti resourceETag; itu berubah ketika ada apa pun di dalam kontak buku alamat telah berubah. Hal ini memungkinkan program klien dengan cepat menentukan bahwa program tidak perlu menyinkronkan kontak yang diubah. - Google menggunakan VCard 3.0 sebagai format encoding kontak. Lihat: rfc6350: VCard 3.0.
CardDAV Google memerlukan OAuth 2.0
Antarmuka CardDAV Google memerlukan OAuth 2.0. Lihat tautan dokumentasi di bawah ini untuk informasi tentang penggunaan OAuth 2.0 untuk mengakses Google API:
Menghubungkan ke server CardDAV Google
Protokol CardDAV memungkinkan penemuan URI resource buku alamat dan kontak. Anda tidak boleh melakukan hardcode pada URI mana pun karena URI dapat berubah kapan saja.
Aplikasi klien harus menggunakan HTTPS, dan autentikasi OAuth 2.0 harus
disediakan untuk Akun Google pengguna. Server CardDAV tidak akan
melakukan otentikasi permintaan kecuali diterima melalui HTTPS dengan OAuth 2.0
autentikasi akun Google, dan aplikasi Anda terdaftar di
DevConsole. Setiap upaya untuk terhubung melalui HTTP dengan Autentikasi dasar atau dengan
email/sandi yang tidak cocok dengan akun Google akan menghasilkan kode respons
401 Unauthorized HTTP.
Untuk menggunakan CardDAV, program klien Anda harus terhubung terlebih dahulu ke jalur penemuan
kanonik dengan melakukan PROPFIND HTTP di:
https://www.googleapis.com/.well-known/carddav
Setelah dialihkan (HTTP 301) ke Resource Buku Alamat, program klien Anda
dapat melakukan PROPFIND untuk menemukan
DAV:current-user-principal, DAV:principal-URL, dan addressbook-home-set
properti baru. Program klien Anda kemudian dapat
menemukan buku alamat utama dengan
melakukan PROPFIND pada addressbook-home-set dan mencari
addressbook, dan collection. Deskripsi lengkap proses ini
berada di luar cakupan dokumen ini. Lihat
rfc6352 untuk mengetahui detail selengkapnya.
Jalur pengalihan yang ditampilkan dalam respons HTTP 301 melalui PROPFIND di
URI yang dikenal tidak boleh di-cache secara permanen (sesuai dengan
rfc6764). Perangkat harus mencoba lagi
Penemuan URI secara berkala untuk memverifikasi apakah jalur yang di-cache masih terbaru dan
menyinkronkan ulang jika
jalur pernah berubah. Google merekomendasikan rasio setiap 2-4 minggu.
Resource
CardDAV menggunakan konsep REST. Aplikasi klien bertindak pada resource yang ditetapkan oleh URI-nya. Struktur URI saat ini ditentukan di sini untuk membantu developer memahami konsep di bagian berikut ini. Struktur dapat berubah dan tidak boleh di-hardcode. Sebaliknya, sumber daya harus ditemukan sesuai dengan RFC.
- Kepala sekolah
- https://www.googleapis.com/carddav/v1/principals/
userEmail
- https://www.googleapis.com/carddav/v1/principals/
- Home Set
- https://www.googleapis.com/carddav/v1/principals/
userEmail/lists
- https://www.googleapis.com/carddav/v1/principals/
- Buku Alamat
- https://www.googleapis.com/carddav/v1/principals/
userEmail/lists/default
- https://www.googleapis.com/carddav/v1/principals/
- Kontak
- https://www.googleapis.com/carddav/v1/principals/
userEmail/lists/default/contactId
- https://www.googleapis.com/carddav/v1/principals/
Menyinkronkan Kontak
Berikut adalah deskripsi umum dari operasi yang didukung. Developer harus mencari detail dalam RFC yang relevan. Permintaan dan respons sebagian besar dikodekan dalam XML. Berikut adalah operasi utama yang digunakan oleh aplikasi klien untuk sinkronisasi:
- Menggunakan CTag
- Program klien menggunakan permintaan
getctagPROPFINDpada resource Alamat Buku untuk menentukan apakah ada kontak yang telah berubah di server dan karenanya apakah sinkronisasi diperlukan. Nilai properti ini dijamin berubah jika ada perubahan kontak. Aplikasi klien harus menyimpan nilai ini dan menggunakannya hanya pada sinkronisasi awal dan sebagai jikasync-tokentidak valid. Mengambil sampel propertigetctagsecara berkala akan menyebabkan throttling.
- Program klien menggunakan permintaan
- Menggunakan token sinkronisasi
- Program klien menggunakan permintaan
sync-tokenPROPFINDdi Alamat Buku untuk mendapatkansync-tokenyang mewakili statusnya saat ini. Aplikasi klien harus menyimpan nilai ini dan mengeluarkan permintaansync-collectionREPORTberkala untuk menentukan perubahan sejaksync-tokenterakhir dikeluarkan. Token yang diterbitkan berlaku selama 29 hari, danREPORTakan berisisync-tokenbaru.
- Program klien menggunakan permintaan
- Menggunakan ETag
- Aplikasi klien mengeluarkan permintaan
getetagPROPFINDpada resource Alamat Buku (dengan headerDEPTHsama denganDEPTH_1). Dengan mempertahankan nilaiETagdari setiap kontak, program klien dapat meminta nilai kontak yangETag-nya telah diubah.
- Aplikasi klien mengeluarkan permintaan
- Mengambil kontak
- Aplikasi klien mengambil kontak dengan mengeluarkan
permintaan
addressbook-multigetREPORT. Dengan mempertimbangkan daftar URI kontak, laporan mengembalikan semua kontak yang diminta sebagai nilai VCard 3.0. Masing-masing entri menyertakanETaguntuk kontak.
- Aplikasi klien mengambil kontak dengan mengeluarkan
permintaan
- Menyisipkan kontak
- Aplikasi klien mengirimkan permintaan
POSTdengan kontak baru di VCard dalam format 3.0. Respons akan berisi ID kontak baru.
- Aplikasi klien mengirimkan permintaan
- Memperbarui kontak
- Aplikasi klien mengeluarkan permintaan
PUTdengan kontak yang diperbarui dalam format VCard 3.0. Kontak akan diperbarui jika kontak tersebut sudah ada di buku alamat. - Aplikasi klien harus menyertakan header
If-Matchdengan atribut kontak yang saat ini dikenalETag. Server kemudian akan menolak permintaanPUT(denganHTTP 412) jikaETagsaat ini di server berbeda denganETagyang dikirim oleh program klien. Hal ini memungkinkan serialisasi update yang optimis.
- Aplikasi klien mengeluarkan permintaan
- Menghapus kontak
- Aplikasi klien menghapus kontak dengan mengeluarkan permintaan
DELETEterhadap URI kontak.
- Aplikasi klien menghapus kontak dengan mengeluarkan permintaan