คู่มือสำหรับนักพัฒนาซอฟต์แวร์ 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 Access Control (rfc3744)
  • rfc4791: การขยายปฏิทินไปยัง WebDAV (CalDAV)
    • รองรับเมธอด HTTP REPORT มีการใช้รายงานทั้งหมดยกเว้นคำค้นหาว่าง-ไม่ว่าง
    • ไม่รองรับเมธอด HTTP MKCALENDAR
    • ไม่รองรับการดำเนินการ AUDIO
  • rfc5545: iปฏิทิน
    • ข้อมูลที่แสดงในอินเทอร์เฟซ CalDAV จะได้รับการจัดรูปแบบตามข้อกำหนดของ iปฏิทิน
    • ขณะนี้ยังไม่รองรับข้อมูล VTODO หรือ VJOURNAL
    • ไม่สนับสนุนส่วนขยาย Apple iCal® เพื่ออนุญาตพร็อพเพอร์ตี้ของ URL ที่ผู้ใช้ตั้งค่าได้
  • rfc6578: การซิงค์คอลเล็กชันสำหรับ 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.