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
ctag
seperti 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
getctag
PROPFIND
pada 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-token
tidak valid. Mengambil sampel propertigetctag
secara berkala akan menyebabkan throttling.
- Program klien menggunakan permintaan
- Menggunakan token sinkronisasi
- Program klien menggunakan permintaan
sync-token
PROPFIND
di Alamat Buku untuk mendapatkansync-token
yang mewakili statusnya saat ini. Aplikasi klien harus menyimpan nilai ini dan mengeluarkan permintaansync-collection
REPORT
berkala untuk menentukan perubahan sejaksync-token
terakhir dikeluarkan. Token yang diterbitkan berlaku selama 29 hari, danREPORT
akan berisisync-token
baru.
- Program klien menggunakan permintaan
- Menggunakan ETag
- Aplikasi klien mengeluarkan permintaan
getetag
PROPFIND
pada resource Alamat Buku (dengan headerDEPTH
sama denganDEPTH_1
). Dengan mempertahankan nilaiETag
dari 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-multiget
REPORT
. Dengan mempertimbangkan daftar URI kontak, laporan mengembalikan semua kontak yang diminta sebagai nilai VCard 3.0. Masing-masing entri menyertakanETag
untuk kontak.
- Aplikasi klien mengambil kontak dengan mengeluarkan
permintaan
- Menyisipkan kontak
- Aplikasi klien mengirimkan permintaan
POST
dengan kontak baru di VCard dalam format 3.0. Respons akan berisi ID kontak baru.
- Aplikasi klien mengirimkan permintaan
- Memperbarui kontak
- Aplikasi klien mengeluarkan permintaan
PUT
dengan 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-Match
dengan atribut kontak yang saat ini dikenalETag
. Server kemudian akan menolak permintaanPUT
(denganHTTP 412
) jikaETag
saat ini di server berbeda denganETag
yang dikirim oleh program klien. Hal ini memungkinkan serialisasi update yang optimis.
- Aplikasi klien mengeluarkan permintaan
- Menghapus kontak
- Aplikasi klien menghapus kontak dengan mengeluarkan permintaan
DELETE
terhadap URI kontak.
- Aplikasi klien menghapus kontak dengan mengeluarkan permintaan