cURL Apple iCloud 日历订阅链接失败

Posted

技术标签:

【中文标题】cURL Apple iCloud 日历订阅链接失败【英文标题】:cURL Apple iCloud Calendar Subscription Link Fails 【发布时间】:2017-06-03 02:00:52 【问题描述】:

我一直在 php Web 应用程序中使用 cURL 从 iCloud 日历中获取 ics 数据,但最近它停止工作了。 JSON 响应是 "reason":"Invalid or missing Origin header","error":1 iCloud 提供的链接具有 webcal:// 协议,但过去它已将其替换为 https:// /.

这是 PHP 中的 cURL 请求:

$request = curl_init();
curl_setopt_array($request, array
    (
    CURLOPT_URL => 'https://p05-calendarws.icloud.com/ca/subscribe/1/D_qOGO6JavMSf055UDaLZJP3SMdywBrlw_w6JkYC1yNJK6R5oxtSOXXXXXXXXXX',
    CURLOPT_POST => FALSE,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_HEADER => FALSE,
    CURLOPT_FOLLOWLOCATION => TRUE
));

$response = curl_exec($request);
curl_close($request);

我认为这可能是 Apple 及其最近一直在推广的 2 因素身份验证的问题。如果这是原因,我找到了从 iCloud 获取应用程序特定密码的位置,但不知道如何在此处实现。

【问题讨论】:

【参考方案1】:

提供帮助可能为时已晚,但这可能仅适用于已发布(可共享、只读)的日历。我用我的一个试了一下(并回显了 $response)并为我的日历获取了所有事件。

CURLOPT_URL => 'https://p35-calendars.icloud.com/published/2/f3en8ZL-G5cgxxxxxxxxx'

【讨论】:

以上是关于cURL Apple iCloud 日历订阅链接失败的主要内容,如果未能解决你的问题,请参考以下文章

苹果手机日历怎么显示法定节假日

从 iCloud 获取 CalDAV 事件返回“403 Forbidden”

在使用 iCloud 的人之间共享任务列表

将 Icloud 与 Rails Web 应用程序链接

iOS 是不是允许本地日历和 iCloud 共存?

iCloud日历删除事件请求不适用于caldav