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

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

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

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

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

  • 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)
  • rfc4791: ส่วนขยายการจัดตารางเวลาสำหรับ WebDAV (CalDAV)
    • รองรับเมธอด HTTP REPORT รายงานทั้งหมด ยกเว้น free-busy-query ได้รับการติดตั้งใช้งานแล้ว
    • ไม่รองรับเมธอด HTTP MKCALENDAR
    • ไม่รองรับการดำเนินการ AUDIO
  • rfc5545: iCalendar
    • ข้อมูลที่แสดงในอินเทอร์เฟซ CalDAV จะจัดรูปแบบตามข้อกำหนด iCalendar
    • ขณะนี้ยังไม่รองรับข้อมูล VTODO หรือ VJOURNAL
    • ไม่รองรับส่วนขยาย Apple iCal® เพื่ออนุญาตให้ตั้งค่าพร็อพเพอร์ตี้ URL ที่ผู้ใช้ตั้งค่าได้
  • rfc6578: Collection Synchronization for WebDAV
    • แอปพลิเคชันไคลเอ็นต์ต้องเปลี่ยนไปใช้โหมดการทำงานนี้หลังจาก การซิงค์ครั้งแรก
  • rfc6638: ส่วนขยายการจัดกำหนดการสำหรับ 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 โปรแกรมไคลเอ็นต์จะเชื่อมต่อกับเซิร์ฟเวอร์ปฏิทินที่จุดเริ่มต้น 2 จุด ไม่ว่าจะในกรณีใด การเชื่อมต่อต้องทำผ่าน HTTPS และต้องใช้รูปแบบการตรวจสอบสิทธิ์ OAuth 2.0 เซิร์ฟเวอร์ CalDAV จะปฏิเสธการตรวจสอบสิทธิ์คำขอ เว้นแต่คำขอจะมาผ่าน HTTPS พร้อมการตรวจสอบสิทธิ์ OAuth 2.0 ของบัญชี Google การพยายามเชื่อมต่อผ่าน HTTP หรือใช้การตรวจสอบสิทธิ์ขั้นพื้นฐานจะส่งผลให้เกิดรหัสสถานะ HTTP 401 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.