คู่มือสำหรับนักพัฒนาซอฟต์แวร์ CalDAV API

CalDAV คือส่วนขยายของ WebDAV ที่ให้มาตรฐานสำหรับไคลเอ็นต์ในการเข้าถึงข้อมูลปฏิทินในเซิร์ฟเวอร์ระยะไกล

Google มีอินเทอร์เฟซ CalDAV ที่คุณสามารถใช้เพื่อดูและจัดการปฏิทินโดยใช้โปรโตคอล CalDAV

ข้อกำหนดเฉพาะ

การสนับสนุน CalDAV ของ Google สำหรับข้อกำหนดที่เกี่ยวข้องแต่ละข้อมีดังนี้

  • rfc4918: ส่วนขยาย HTTP สําหรับการเขียนและการจัดเวอร์ชันแบบกระจายบนเว็บ (WebDAV)
    • รองรับเมธอด HTTP GET, PUT, HEAD, DELETE, POST, OPTIONS, PROPFIND และ PROPPATCH
    • ไม่รองรับเมธอด HTTP LOCK, UNLOCK, COPY, MOVE หรือ MKCOL หรือส่วนหัว If* (ยกเว้น If-Match)
    • ไม่รองรับพร็อพเพอร์ตี้ WebDAV ที่กำหนดเอง (ผู้ใช้กำหนด)
    • ไม่รองรับการควบคุมการเข้าถึง WebDAV (rfc3744)
  • rfc4791: ส่วนขยายปฏิทินสำหรับ WebDAV (CalDAV)
    • รองรับเมธอด HTTP REPORT มีการใช้รายงานทั้งหมดยกเว้น free-busy-query
    • ไม่รองรับเมธอด HTTP MKCALENDAR
    • ไม่รองรับการดำเนินการ AUDIO
  • rfc5545: iCalendar
    • ข้อมูลที่แสดงในอินเทอร์เฟซ CalDAV อยู่ในรูปแบบตามข้อกำหนดของ iCalendar
    • ยังไม่รองรับข้อมูล VTODO หรือ VJOURNAL ในขณะนี้
    • ไม่รองรับส่วนขยาย Apple iCal® เพื่ออนุญาตให้ผู้ใช้ตั้งค่าพร็อพเพอร์ตี้ URL ได้
  • rfc6578: การซิงค์คอลเล็กชันสำหรับ WebDAV
    • แอปพลิเคชันไคลเอ็นต์ต้องเปลี่ยนไปใช้โหมดการทํางานนี้หลังจากการซิงค์ครั้งแรก
  • rfc6638: Scheduling Extensions to CalDAV
    • รองรับ "กล่องจดหมาย" ที่ไม่มีความหมาย ซึ่งว่างเปล่าเสมอ
    • ระบบจะส่งคำเชิญที่คุณได้รับไปยังคอลเล็กชัน "กิจกรรม" โดยอัตโนมัติแทนที่จะส่งไปยัง "กล่องจดหมาย"
    • ไม่รองรับการค้นหาเวลาว่าง
  • caldav-ctag-02: แท็กเอนทิตีคอลเล็กชันปฏิทิน (CTag) ใน CalDAV
    • ปฏิทิน ctag เปรียบเสมือนทรัพยากร etag ซึ่งจะเปลี่ยนแปลงเมื่อมีอะไรเปลี่ยนแปลงในปฏิทิน ซึ่งช่วยให้แอปพลิเคชันไคลเอ็นต์สามารถระบุได้อย่างรวดเร็วว่าไม่จำเป็นต้องซิงค์เหตุการณ์ที่เปลี่ยนแปลง
  • calendar-proxy: ฟังก์ชันการทำงานของพร็อกซีผู้ใช้ปฏิทินใน CalDAV
    • หากต้องการปรับปรุงประสิทธิภาพการซิงค์ปฏิทินจากอุปกรณ์ iOS ซึ่งไม่รองรับการมอบสิทธิ์ การใช้พร็อพเพอร์ตี้ calendar-proxy-read-for หรือ calendar-proxy-write-for กับ UserAgent ของ iOS จะใช้งานไม่ได้

เรายังไม่ได้ให้การใช้งานข้อกําหนดที่เกี่ยวข้องทั้งหมดอย่างเต็มรูปแบบ อย่างไรก็ตาม สำหรับไคลเอ็นต์จำนวนมาก เช่น แอปปฏิทินของ Apple โปรโตคอล CalDAV ควรทํางานร่วมกันได้อย่างถูกต้อง

หมายเหตุ: Google อาจตั้งค่าคุกกี้ในแอปพลิเคชันไคลเอ็นต์ที่เข้าถึงข้อมูลผ่าน CalDAV เพื่อรักษาความปลอดภัยของบัญชีและป้องกันการละเมิด

การสร้างรหัสไคลเอ็นต์

หากต้องการใช้ CalDAV API คุณต้องมีบัญชี Google หากมีบัญชีที่ใช้งานได้อยู่แล้ว ทุกอย่างก็พร้อมใช้งานแล้ว

ก่อนที่จะส่งคำขอไปยัง CalDAV API ได้ คุณต้องลงทะเบียนไคลเอ็นต์กับคอนโซล Google API โดยการสร้างโปรเจ็กต์

ไปที่คอนโซล Google API คลิกสร้างโปรเจ็กต์ ป้อนชื่อ แล้วคลิกสร้าง

ขั้นตอนถัดไปคือการเปิดใช้งาน CalDAV API

หากต้องการเปิดใช้ API สําหรับโปรเจ็กต์ ให้ทําดังนี้

  1. เปิดไลบรารี API ในคอนโซล Google API หากได้รับข้อความแจ้ง ให้เลือกโปรเจ็กต์หรือสร้างโปรเจ็กต์ใหม่ คลัง API จะแสดง API ทั้งหมดที่ใช้ได้ โดยจัดกลุ่มตามตระกูลผลิตภัณฑ์และความนิยม
  2. หากไม่เห็น API ที่ต้องการเปิดใช้ในรายการ ให้ใช้การค้นหาเพื่อค้นหา
  3. เลือก API ที่ต้องการเปิดใช้ แล้วคลิกปุ่มเปิดใช้
  4. เปิดใช้การเรียกเก็บเงินหากได้รับข้อความแจ้ง
  5. ยอมรับข้อกำหนดในการให้บริการของ API หากได้รับข้อความแจ้ง
หากต้องการส่งคําขอ CalDAV API คุณจะต้องมีรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์

หากต้องการค้นหารหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ของโปรเจ็กต์ ให้ทําดังนี้

  1. เลือกข้อมูลเข้าสู่ระบบ OAuth 2.0 ที่มีอยู่หรือเปิดหน้าข้อมูลเข้าสู่ระบบ
  2. หากยังไม่ได้สร้าง ให้สร้างข้อมูลเข้าสู่ระบบ OAuth 2.0 ของโปรเจ็กต์โดยคลิกสร้างข้อมูลเข้าสู่ระบบ > รหัสไคลเอ็นต์ OAuth แล้วระบุข้อมูลที่จำเป็นในการสร้างข้อมูลเข้าสู่ระบบ
  3. มองหารหัสไคลเอ็นต์ในส่วนรหัสไคลเอ็นต์ OAuth 2.0 คลิกรหัสไคลเอ็นต์เพื่อดูรายละเอียด

การเชื่อมต่อกับเซิร์ฟเวอร์ CalDAV ของ Google

หากต้องการใช้อินเทอร์เฟซ CalDAV โปรแกรมไคลเอ็นต์จะเชื่อมต่อกับเซิร์ฟเวอร์ปฏิทินจากจุดเริ่มต้นจุดใดจุดหนึ่ง ไม่ว่าในกรณีใด การเชื่อมต่อจะต้องทำผ่าน HTTPS และใช้รูปแบบการตรวจสอบสิทธิ์ OAuth 2.0 เซิร์ฟเวอร์ CalDAV จะปฏิเสธการตรวจสอบสิทธิ์คำขอ เว้นแต่ว่าคำขอจะส่งผ่าน HTTPS พร้อมการตรวจสอบสิทธิ์ OAuth 2.0 ของบัญชี Google การพยายามเชื่อมต่อผ่าน HTTP หรือใช้การตรวจสอบสิทธิ์พื้นฐานจะส่งผลให้เกิดรหัสสถานะ HTTP401 Unauthorized

หากโปรแกรมไคลเอ็นต์ (เช่น แอปปฏิทินของ Apple) กำหนดให้ใช้คอลเล็กชันหลักเป็นจุดเริ่มต้น URI ที่จะเชื่อมต่อคือ

https://apidata.googleusercontent.com/caldav/v2/calid/user

โดยให้แทนที่ calid ด้วย "รหัสปฏิทิน" ของปฏิทินที่ต้องการเข้าถึง ซึ่งดูได้จากอินเทอร์เฟซเว็บของ Google ปฏิทิน โดยเลือกการตั้งค่าปฏิทินในเมนูแบบเลื่อนลงข้างชื่อปฏิทิน ในหน้าที่ปรากฏขึ้น รหัสปฏิทินจะแสดงในส่วนที่มีป้ายกำกับว่าที่อยู่ปฏิทิน รหัสปฏิทินสำหรับปฏิทินหลักของผู้ใช้จะเหมือนกับอีเมลของผู้ใช้รายนั้น

หากโปรแกรมไคลเอ็นต์ (เช่น Mozilla Sunbird) กำหนดให้ใช้คอลเล็กชันปฏิทินเป็นจุดเริ่มต้น URI ที่จะเชื่อมต่อคือ

https://apidata.googleusercontent.com/caldav/v2/calid/events

ปลายทางเดิม https://www.google.com/calendar/dav เลิกใช้งานแล้วและไม่รองรับอีกต่อไป โปรดใช้ปลายทางนี้โดยพิจารณาจากความเสี่ยงของคุณเอง เราขอแนะนำให้เปลี่ยนไปใช้รูปแบบปลายทางใหม่ตามที่อธิบายไว้ข้างต้น

iCal® เป็นเครื่องหมายการค้าของ Apple Inc.