CalDAV הוא הרחבה של WebDAV שמספקת תקן לגישת לקוחות למידע ביומן בשרת מרוחק.
Google מספקת ממשק CalDAV שבו אפשר להציג ולנהל יומנים באמצעות פרוטוקול CalDAV.
ל-CalDAV API יש את אותן מגבלות מכסה כמו ל-Calendar API. מידע נוסף זמין במאמר בנושא מגבלות שימוש.
מפרטים
התמיכה של Google ב-CalDAV בכל אחד מהמפרטים הרלוונטיים היא כדלקמן:
rfc4918: HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)
- תומך בשיטות HTTP:
GET,PUT,HEAD,DELETE,POST,OPTIONS,PROPFINDו-PROPPATCH. - לא תומך בשיטות HTTP
LOCK,UNLOCK,COPY,MOVE,MKCOLאו בכותרתIf*(למעטIf-Match). - לא תומך במאפייני WebDAV שרירותיים (מוגדרים על ידי המשתמש).
- לא תומך בבקרת גישה ל-WebDAV (rfc3744).
- תומך בשיטות HTTP:
rfc4791: Calendaring Extensions to WebDAV (CalDAV)
- יש תמיכה בשיטת ה-HTTP
REPORT. כל הדוחות מלבדfree-busy-queryמוטמעים. - אין תמיכה בשיטת ה-HTTP
MKCALENDAR. - אין תמיכה בפעולה
AUDIO.
- יש תמיכה בשיטת ה-HTTP
-
- הנתונים שנחשפים בממשק CalDAV מעוצבים לפי מפרט iCalendar.
- אין תמיכה בנתוני
VTODOאוVJOURNAL. - לא תומך בתוסף Apple iCal כדי לאפשר הגדרת מאפייני כתובת URL על ידי המשתמש.
rfc6578: Collection Synchronization for WebDAV
- אחרי הסנכרון הראשוני, אפליקציות לקוח צריכות לעבור למצב הפעולה הזה.
rfc6638: Scheduling Extensions to CalDAV
- תומך בתיבת דואר נכנס פשוטה, שתמיד ריקה.
- ההזמנות שאתם מקבלים מועברות אוטומטית לאוסף 'אירועים' ולא לתיבת הדואר הנכנס.
- אין תמיכה בחיפוש
free-busy.
caldav-ctag-02: Calendar Collection Entity Tag (CTag) in CalDAV
- היומן
ctagהוא כמו משאבetag, והוא משתנה כשמשהו ביומן משתנה. כך אפליקציית הלקוח יכולה לקבוע במהירות שהיא לא צריכה לסנכרן אירועים ששונו.
- היומן
calendar-proxy: Calendar User Proxy Functionality in CalDAV
- כדי לשפר את הביצועים של סנכרון היומן, בקשות שכוללות את המאפיינים
calendar-proxy-read-forאוcalendar-proxy-write-forייכשלו עם UserAgent של iOS, כי מכשירי iOS לא תומכים בהקצאת הרשאות.
- כדי לשפר את הביצועים של סנכרון היומן, בקשות שכוללות את המאפיינים
ההטמעה שלנו של CalDAV לא מכסה כל מפרט, אבל היא פועלת בצורה תקינה עבור לקוחות רבים, כולל יומן Apple.
יצירת מזהה לקוח
כדי להשתמש ב-CalDAV API, צריך שיהיה לכם חשבון Google.
כדי לשלוח בקשות אל CalDAV API, צריך לרשום את הלקוח במסוף Google Cloud על ידי יצירת פרויקט.
עוברים אל Google API Console. לוחצים על Create project (יצירת פרויקט), מזינים שם ולוחצים על Create (יצירה).
בשלב הבא צריך להפעיל את CalDAV API.
כדי להפעיל API בפרויקט:
- פותחים את API Library ב-Google API Console. אם מופיעה הנחיה, בוחרים פרויקט או יוצרים פרויקט חדש. בספריית ה-API מפורטים כל ממשקי ה-API הזמינים, שמקובצים לפי משפחת מוצרים ופופולריות.
- אם ה-API שרוצים להפעיל לא מופיע ברשימה, אפשר להשתמש בחיפוש כדי למצוא אותו.
- בוחרים את ה-API שרוצים להפעיל ולוחצים על הלחצן הפעלה.
- אם תופיע בקשה, תצטרכו להפעיל את החיוב.
- אם מתבקשים לעשות זאת, מאשרים את התנאים וההגבלות של ה-API.
כדי לבצע בקשות CalDAV API, צריך מזהה לקוח וסוד לקוח.
כדי למצוא את מזהה הלקוח ואת סוד הלקוח של הפרויקט:
- בוחרים פרטי כניסה קיימים של OAuth 2.0 או פותחים את דף פרטי הכניסה.
- אם עדיין לא עשיתם זאת, צרו את פרטי הכניסה של OAuth 2.0 לפרויקט. לשם כך, לוחצים על יצירת פרטי כניסה > מזהה לקוח OAuth ומזינים את הפרטים שנדרשים ליצירת פרטי הכניסה.
- מחפשים את מזהה הלקוח בקטע מזהי לקוחות OAuth 2.0. לפרטים, לוחצים על מזהה הלקוח.
התחברות לשרת CalDAV של Google
כדי להשתמש בממשק CalDAV, תוכנת לקוח מתחברת בתחילה לשרת היומן באחת משתי נקודות התחלה. בכל מקרה, החיבור צריך להתבצע באמצעות HTTPS, וצריך להשתמש בסכמת האימות OAuth 2.0. שרת CalDAV מסרב לאמת בקשה אלא אם היא מגיעה דרך HTTPS עם אימות OAuth 2.0 של חשבון Google. ניסיון להתחבר באמצעות HTTP או באמצעות אימות בסיסי יגרום לקוד סטטוס HTTP 401 Unauthorized.
אם תוכנת הלקוח (כמו אפליקציית היומן של אפל) דורשת אוסף ראשי כנקודת התחלה, ה-URI להתחברות הוא:
https://apidata.googleusercontent.com/caldav/v2/CALENDAR_ID/user
מחליפים את CALENDAR_ID במזהה של היומן שרוצים לגשת אליו.
כדי למצוא את מזהה היומן דרך ממשק האינטרנט, בוחרים באפשרות ** הגדרות היומן** בתפריט הנפתח שליד שם היומן. מזהה היומן מוצג בקטע שנקרא כתובת היומן. מזהה היומן של היומן הראשי של המשתמש זהה לכתובת האימייל של המשתמש.
אם תוכנת לקוח (כמו Mozilla Thunderbird) דורשת אוסף של יומנים כנקודת התחלה, צריך להשתמש ב-URI הבא:
https://apidata.googleusercontent.com/caldav/v2/CALENDAR_ID/events