要访问 iCloud 日历或提醒,您可以使用称为
CalDAV的 IETF 协议。
构建 CalDAV 客户端
是关于如何执行此操作的一个很好的介绍。有了以上内容,您只是向GET
API 发出请求......
使用 curl 它是一个 3 步过程来获取日历名称。首先,您需要找出代表您的 iCloud 帐户的 URL(
在 WebDAV 中称为Principal ):
curl -s -X PROPFIND -u "$APPLEID" -H "Depth: 0" \
--data "<propfind xmlns='DAV:'><prop><current-user-principal/></prop></propfind>" \
https://caldav.icloud.com/
如果您无法对此进行身份验证,您使用了错误的凭据,您可能已为您的 iCloud 帐户启用了两步验证,或者它已超过 2017-06-15:“将需要特定于应用程序的密码才能登录从 6 月 15 日起使用第三方应用程序到 iCloud"。在这种情况下,您需要为 CalDAV 访问设置
应用程序专用密码
。
上面的 curl 向您显示了您的帐户记录的 URL,它看起来像https://caldav.icloud.com/347723822/principal/
. 下一步是确定您的日历的托管位置。它存储在calendar-home-set
主体的帐户属性中,可以像这样访问:
curl -s -X PROPFIND -u "$APPLEID" -H "Depth: 0" \
--data "<propfind xmlns='DAV:' xmlns:cd='urn:ietf:params:xml:ns:caldav'><prop><cd:calendar-home-set/></prop></propfind>" \
https://caldav.icloud.com/827267162/principal/
这为您提供了对实际日历所在的集群的引用,它看起来像
https://p22-caldav.icloud.com:443/827161622/calendars
. 假设您想获取用户拥有的所有日历的名称:
curl -s -X PROPFIND -u "$APPLEID" -H "Depth: 1" \
--data "<propfind xmlns='DAV:'><prop><displayname/></prop></propfind>" \
https://p42-caldav.icloud.com:443/28377271/calendars/ \
| grep displayname
希望这能让你开始。