ניתן להציג ולנהל את אנשי הקשר באמצעות פרוטוקול CardDAV של Google.
אנשי הקשר נשמרים בחשבון Google של המשתמש; ברוב שירותי Google יש גישה לרשימת אנשי הקשר. אפליקציית הלקוח שלך יכולה להשתמש ב-CardDAV API כדי ליצור אנשי קשר חדשים, לערוך או למחוק אנשי קשר קיימים, ולשלוח שאילתות על אנשי קשר שתואמים לקריטריונים מסוימים.
מפרטים
המפרט המלא לא מיושם, אבל לקוחות רבים כמו אנשי קשר של Apple iOSTM ו-macOS אמורים לפעול באופן הדדי באופן תקין.
התמיכה של Google ב-CardDAV בכל מפרט רלוונטי היא:
- rfc2518: תוספי HTTP להרשמה מבוזרת (WebDAV)
- תמיכה בשיטות ה-HTTP
GET,PUT,DELETE,OPTIONSו-PROPFIND. - לא תומך בשיטות ה-HTTP
LOCK,UNLOCK,COPY,MOVEאוMKCOL. - לא תומך במאפייני WebDAV שרירותיים (שהוגדרו על ידי משתמשים).
- לא תומך בבקרת גישה ל-WebDAV (rfc3744).
- תמיכה בשיטות ה-HTTP
- rfc5995: Using POST to Add Members to WebDAV Collections
- תמיכה ביצירת אנשי קשר חדשים בלי לציין מזהה.
- rfc6352: CardDAV: תוספי vCard לרשתות בהפצה באינטרנט וגם
ניהול גרסאות (WebDAV)
- יש תמיכה בשיטת ה-HTTP
REPORT, אבל לא כל הדוחות שהוגדרו מוטמעים. - תומכת בהעלאת אוסף של חשבון משתמש ואוסף אנשי קשר.
- יש תמיכה בשיטת ה-HTTP
- rfc6578: Collection Synchronization for WebDAV
- אפליקציות הלקוח צריכות לעבור למצב הפעולה הזה אחרי הסנכרון הראשוני.
- rfc6749: מסגרת ההרשאה של OAuth 2.0 וגם
rfc6750: מסגרת ההרשאה ל-OAuth 2.0: שימוש באסימון בר
- תמיכה באימות תוכנות לקוח CardDAV באמצעות OAuth 2.0 HTTP אימות. Google לא תומכת בשיטות אימות אחרות. כדי לשמור על אבטחת נתוני אנשי הקשר, אנחנו דורשים שחיבורי CardDAV ישתמשו ב-HTTPS.
- rfc6764: איתור שירותים של תוספים ליומן ב-WebDAV (CalDAV) ובתוספי vCard ל-WebDAV (CardDAV)
- הטעינה הראשונית של כתובות ה-URL של CardDAV חייבת להתבצע בהתאם לקטע 6 של rfc6764.
- תמיכה ב-caldav-ctag-02: תג ישות של אוסף יומנים (CTag) ב-CalDAV, שמשותף בין המפרטים של CardDAV ו-CalDAV. אנשי הקשר
ctagדומה למשאבETag; הוא משתנה כשפריט כלשהו באנשי הקשר פנקס הכתובות השתנה. כך תוכנת הלקוח יכולה לקבוע במהירות שלא צריך לסנכרן אף איש קשר שהשתנה. - Google משתמשת ב-VCard 3.0 כפורמט הקידוד של אנשי הקשר. למידע נוסף: rfc6350: VCard 3.0.
ב-CardDAV של Google נדרש OAuth 2.0
כדי להשתמש בממשק CardDAV של Google, נדרש OAuth 2.0. אפשר לעיין בקישור התיעוד שבהמשך לקבלת מידע על שימוש ב-OAuth 2.0 כדי לגשת ל-Google APIs:
התחברות לשרת CardDAV של Google
פרוטוקול CardDAV מאפשר גילוי של פנקס הכתובות ומשאבים ליצירת קשר מזהי URI. אסור להטמיע בקוד URI כלשהו, כי הוא עשוי להשתנות בכל שלב.
אפליקציות לקוח חייבות להשתמש ב-HTTPS, וצריך לספק אימות OAuth 2.0 לחשבון Google של המשתמש. שרת CardDAV לא יאמת בקשה אלא אם היא תגיע דרך HTTPS עם אימות OAuth 2.0 של חשבון Google, והאפליקציה שלכם תהיה רשומה ב-DevConsole. כל ניסיון להתחבר באמצעות HTTP עם אימות בסיסי או עם אימייל/סיסמה שלא תואמים לחשבון Google יגרום לקוד התגובה 401 Unauthorized ב-HTTP.
כדי להשתמש ב-CardDAV, תוכנת הלקוח צריכה תחילה להתחבר אל הדף הקנוני
נתיב הגילוי על ידי ביצוע HTTP PROPFIND ב:
https://www.googleapis.com/.well-known/carddav
לאחר ההפניה (HTTP 301) למשאב של פנקס הכתובות, תוכנת הלקוח שלך
יכול לבצע עליו PROPFIND כדי לגלות
DAV:current-user-principal, DAV:principal-URL וגם addressbook-home-set
נכסים. לאחר מכן, תוכנית הלקוח יכולה לגלות את פנקס הכתובות של חשבון המשתמש על ידי ביצוע PROPFIND ב-addressbook-home-set ומחפשת את המשאבים addressbook ו-collection. תיאור מלא של התהליך הזה
לא כולל את המסמך הזה. פרטים נוספים זמינים במסמך rfc6352.
אסור לאחסן את נתיב ההפניה האוטומטית שמוחזרת בתגובה HTTP 301 דרך PROPFIND ב-URI הידוע באופן קבוע במטמון (בהתאם ל-rfc6764). מכשירים צריכים לנסות שוב מדי פעם לזהות URI ידועים כדי לוודא שהנתיב ששמור במטמון עדיין מעודכן, ולבצע סנכרון מחדש אם הנתיב משתנה. Google ממליצה לבצע את הפעולה הזו כל שבועיים עד 4 שבועות.
משאבים
ב-CardDAV נעשה שימוש במושגי REST. אפליקציות לקוח פועלות על משאבים שמסומנים לפי מזהי ה-URI שלהם. המבנה הנוכחי של URI מצוין כאן כדי לעזור למפתחים להבין את המושגים שבקטע הבא. המבנה עשוי לשנות ולא לכתוב בתוך הקוד. במקום זאת, צריך לגלות את המשאבים. בהתאם ל-RFC.
- Principal
- 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/
- פנקס הכתובות
- https://www.googleapis.com/carddav/v1/principals/
userEmail/lists/default
- https://www.googleapis.com/carddav/v1/principals/
- יצירת קשר
- https://www.googleapis.com/carddav/v1/principals/
userEmail/lists/default/contactId
- https://www.googleapis.com/carddav/v1/principals/
סנכרון אנשי הקשר
בהמשך מופיע תיאור כללי של הפעולות הנתמכות. המפתחים צריכים לחפש את הפרטים ב-RFC הרלוונטי. רוב הבקשות והתשובות מקודדות ב-XML. אלה הפעולות העיקריות שבהן משתמשים אפליקציות לקוח לצורך סנכרון:
- שימוש ב-CTag
- תוכנות לקוח משתמשות בבקשה
getctagPROPFINDבמשאב של פנקס הכתובות כדי לקבוע אם בוצעו שינויים באנשי הקשר בשרת, וכתוצאה מכך אם יש צורך בסנכרון. הערך של המאפיין הזה ישתנה בוודאות אם יתבצע שינוי בפרטי איש הקשר. אפליקציות לקוח צריכות לאחסן את הערך הזה ולהשתמש בו רק בסנכרון הראשוני וכחלופה במקרה ש-sync-tokenלא תקף. ניטור תקופתי של המאפייןgetctagיוביל לוויסות הקצב.
- תוכנות לקוח משתמשות בבקשה
- באמצעות sync-token
- תוכנות לקוח משתמשות בבקשה
sync-tokenPROPFINDבספר הכתובות כדי לקבל את הערך שלsync-tokenשמייצג את המצב הנוכחי שלה. לקוח/ה אפליקציות חייבות לאחסן את הערך הזה ולהנפיקsync-collectionלפרקיםREPORTבקשות לקביעת שינויים מאז ההנפקה האחרונהsync-token. אסימונים שהונפקו תקפים למשך 29 ימים.REPORTהתשובה תכילsync-tokenחדש.
- תוכנות לקוח משתמשות בבקשה
- שימוש ב-ETags
- אפליקציות לקוח מנפיקות בקשת
getetagPROPFINDבכתובת משאב ספר (עם הכותרתDEPTHשווה ל-DEPTH_1). באמצעות שמירה על את הערךETagשל כל איש קשר, תוכנית לקוח יכולה לבקש את הערך מאנשי הקשר שמערכתETagשלהם שונתה.
- אפליקציות לקוח מנפיקות בקשת
- אחזור אנשי קשר
- אפליקציות לקוח מאחזרות אנשי קשר על ידי הנפקת
בקשת
addressbook-multigetREPORT. בהינתן רשימה של מזהי URI של אנשי קשר, הדוח יחזיר את כל אנשי הקשר המבוקשים כערכי VCard 3.0. כל רשומה כוללת את השדהETagשל איש הקשר.
- אפליקציות לקוח מאחזרות אנשי קשר על ידי הנפקת
בקשת
- הוספת איש קשר
- אפליקציות לקוח מנפיקות בקשת
POSTעם איש הקשר החדש ב-VCard בפורמט 3.0. התשובה תכלול את המזהה של איש הקשר החדש.
- אפליקציות לקוח מנפיקות בקשת
- עדכון של איש קשר
- אפליקציות לקוח מנפיקות בקשת
PUTעם איש הקשר המעודכן ב- פורמט VCard 3.0. איש הקשר מתעדכן אם הוא כבר קיים בספר הכתובות. - אפליקציות לקוח צריכות לכלול כותרת
If-MatchעםETagהידוע של איש הקשר. לאחר מכן השרת ידחה אתPUTבקשה (עםHTTP 412) אם ה-ETagהנוכחי בשרת הוא שונה מ-ETagשנשלחה על ידי תוכנת הלקוח. כך אפשר בהמשכים אופטימיים של עדכונים.
- אפליקציות לקוח מנפיקות בקשת
- מחיקת איש קשר
- אפליקציות לקוח מוחקים איש קשר על ידי שליחת בקשת
DELETEל-URI של איש הקשר.
- אפליקציות לקוח מוחקים איש קשר על ידי שליחת בקשת