首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iCloud日历请求

iCloud日历请求
EN

Stack Overflow用户
提问于 2017-02-18 19:08:17
回答 1查看 3.7K关注 0票数 3

我正在尝试通过iCloud访问我的curl日历(在编写任何代码之前使用它作为测试),但是会出现未经授权的访问错误。有人运气好吗?我使用提取我的用户ID,并通过发送电子邮件给自己发送事件邀请来确定服务器ID。

命令运行

代码语言:javascript
复制
curl -u <apple email ID> https://<server id>-caldav.icloud.com/<user id>/calendars

响应

代码语言:javascript
复制
<html><head><title>Unauthorized</title></head><body><h1>Unauthorized</h1><p>You are not authorized to access this resource.</p></body></html>

编辑

我尝试过使用fiddler复制查询,但是一直得到一个502响应-- SecurityException连接失败。

EN

Stack Overflow用户

发布于 2017-02-19 12:26:01

要访问iCloud日历或提醒,可以使用名为CalDAV的IETF协议。构建CalDAV客户端是关于如何做到这一点的一个很好的介绍。使用上面的内容,您只是在API上抛出一个GET请求.

使用curl是一个三步的过程,例如,日历名称。首先,您需要找出表示您的iCloud帐户的URL (在WebDAV中称为主体):

代码语言:javascript
复制
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属性中,可以如下方式访问:

代码语言:javascript
复制
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。让我们假设您希望获得用户拥有的所有日历的名称:

代码语言:javascript
复制
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

希望这能让你开始。

票数 8
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42319487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档