Curl iCloud日历请求

Curl iCloud日历请求,curl,icloud,caldav,icloud-api,Curl,Icloud,Caldav,Icloud Api,我试图通过curl访问iCloud日历(在编写任何代码之前,将此作为测试),但未经授权的访问错误。有没有人有幸让它发挥作用?我曾经提取过我的用户ID,并通过向自己发送活动邀请来确定服务器ID 命令运行 curl -u <apple email ID> https://<server id>-caldav.icloud.com/<user id>/calendars curl-u使用fiddler进行查询,但不断得到502响应-连接失败,出现SecurityE

我试图通过
curl
访问iCloud日历(在编写任何代码之前,将此作为测试),但未经授权的访问错误。有没有人有幸让它发挥作用?我曾经提取过我的用户ID,并通过向自己发送活动邀请来确定服务器ID

命令运行

curl -u <apple email ID> https://<server id>-caldav.icloud.com/<user id>/calendars

curl-u使用fiddler进行查询,但不断得到502响应-连接失败,出现
SecurityException

要访问iCloud日历或提醒,请使用名为 . 这是一个很好的介绍如何做到这一点。 在上面,您只是在API上抛出一个
GET
请求

使用curl是一个三步的过程,比如说,获取日历名称。弗斯特 您需要找出表示iCloud帐户的URL(称为 WebDAV中的负责人(发言):

这将提供对实际日历所在集群的引用, 看起来像
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
curl-s-X PROPFIND-u“$APPLEID”-H”深度:1”\
--数据“”\
https://p42-caldav.icloud.com:443/28377271/calendars/ \
|grep显示名

希望这能让您开始。

感谢您发布这篇内容广泛的回答。我遇到了与OP完全相同的问题,并使用-v(verbose)尝试了您的第一个curl命令,得到了401。我100%确信我的证书是正确的。当我登录到icloud.com并开始工作时也会用到同样的方法。没有2-FA激活。知道如何调试这个吗?我想是这样的:就是这样。谢谢@hnh在我的例子中,当我执行您的最后一个步骤时,远程服务器返回了一个错误:(403)禁止。
。你知道可能的情况是什么吗?
curl -s -X PROPFIND -u "$APPLEID" -H "Depth: 0" \
  --data "<propfind xmlns='DAV:'><prop><current-user-principal/></prop></propfind>" \
  https://caldav.icloud.com/
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/
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