CalDAV 是 WebDAV 的扩展,可为客户端提供访问远程服务器上日历信息的标准。
Google 提供了一个 CalDAV 界面,供您使用 CalDAV 协议查看和管理日历。
规格
对于每项相关规范,Google CalDAV 的支持如下:
- rfc4918:适用于网络分布式创作和版本控制的 HTTP 扩展 (WebDAV)
- 支持 HTTP 方法
GET
、PUT
、HEAD
、DELETE
、POST
、OPTIONS
、PROPFIND
和PROPPATCH
。 - 不支持 HTTP 方法
LOCK
、UNLOCK
、COPY
、MOVE
或MKCOL
,也不支持If*
标头(If-Match
除外)。 - 不支持任意(用户定义的)WebDAV 属性。
- 不支持 WebDAV 访问控制 (rfc3744)。
- 支持 HTTP 方法
- rfc4791:将日历扩展程序导入 WebDAV (CalDAV)
- 支持 HTTP 方法
REPORT
。除空闲-忙碌-查询外,所有报告均已实现。 - 不支持 HTTP 方法
MKCALENDAR
。 - 不支持
AUDIO
操作。
- 支持 HTTP 方法
- rfc5545:i 日历
- CalDAV 接口中显示的数据将根据 icalendar 规范设置格式。
- 目前不支持
VTODO
或VJOURNAL
数据。 - 不支持允许用户设置的网址属性的 Apple iCal® 扩展程序。
- rfc6578:WebDAV 的集合同步
- 首次同步后,客户端应用必须切换到此操作模式。
- rfc6638:将扩展程序安排到 CalDAV
- 支持简单的“收件箱”(始终为空)。
- 您收到的邀请会自动发送到您的“活动”集合中,而不是发送到您的“收件箱”中。
- 不支持空闲/忙碌查找功能。
- caldav-ctag-02:CalDAV 中的日历集合实体标记 (CTag)
- 日历
ctag
就像资源etag
一样;它会在日历中发生任何更改时随之变化。这样,客户端应用可以快速确定它不需要同步任何已更改的事件。
- 日历
- calendar-proxy:CalDAV 中的日历用户代理功能
- 为了提高从不支持委托的 iOS 设备同步日历的性能,将
calendar-proxy-read-for
或calendar-proxy-write-for
属性与 iOS UserAgent 搭配使用会失败。
- 为了提高从不支持委托的 iOS 设备同步日历的性能,将
我们尚未提供所有相关规范的完整实现。但是,对于许多客户端(例如 Apple 的日历应用),CalDAV 协议应可正确互操作。
注意:为了确保帐号安全并防止滥用行为,Google 可能会在通过 CalDAV 访问数据的客户端应用上设置 Cookie。
创建客户端 ID
如需使用 CalDAV API,您需要拥有一个 Google 帐号。如果您已经拥有可以使用的帐号,那么就大功告成了。
您必须先创建项目,在 Google API 控制台中注册客户端,然后才能向 CalDAV API 发送请求。
前往 Google API 控制台。点击创建项目,输入名称,然后点击创建。
下一步是激活 CalDAV API。如需为您的项目启用 API,请执行以下操作:
- 在 Google API 控制台中打开 API 库。如果系统提示,请选择一个项目或创建一个新项目。API 库中列出了所有可用的 API(按产品系列和热门程度分组)。
- 如果列表中没有显示您要启用的 API,请使用搜索功能查找该 API。
- 选择您要启用的 API,然后点击启用按钮。
- 如果系统提示,请启用结算功能。
- 如果系统提示,请接受该 API 的服务条款。
如需查找项目的客户端 ID 和客户端密钥,请执行以下操作:
- 选择现有的 OAuth 2.0 凭据或打开“凭据”页面。
- 如果您尚未创建项目的 OAuth 2.0 凭据,请执行此操作,具体方法是点击创建凭据 > OAuth 客户端 ID,并提供创建凭据所需的信息。
- 在 OAuth 2.0 客户端 ID 部分查找客户端 ID。 如需了解详情,请点击客户端 ID。
连接到 Google CalDAV 服务器
要使用 CalDAV 接口,客户端程序最初会在两个起点之一与日历服务器连接。无论是哪种情况,都必须通过 HTTPS 建立连接,并且必须使用 OAuth 2.0 身份验证方案。除非请求通过 HTTPS 与 Google 帐号进行 OAuth 2.0 身份验证,否则 CalDAV 服务器将拒绝对请求进行身份验证。尝试通过 HTTP 或使用基本身份验证进行连接会导致 HTTP 401 Unauthorized
状态代码。
如果客户端程序(例如 Apple 的日历应用)需要将主账号集合作为起点,则要连接的 URI 为:
https://apidata.googleusercontent.com/caldav/v2/calid/user
其中 calid
应替换为要访问的日历的“日历 ID”。您可以通过 Google 日历网络界面找到该 ID,如下所示:在日历名称旁边的下拉菜单中,选择日历设置。在随即显示的页面中,日历 ID 显示在标记为日历地址的部分中。用户主日历的日历 ID 与该用户的电子邮件地址相同。
如果客户端程序(例如 Mozilla Sunbird)需要日历集合作为起点,则要连接的 URI 为:
https://apidata.googleusercontent.com/caldav/v2/calid/events
旧端点 https://www.google.com/calendar/dav 已弃用,不再受支持;使用时请自行承担风险。我们建议您改用上述新端点格式。
iCal® 是 Apple Inc. 的商标。