Я использовал cURL в php-приложении для извлечения данных из календарей iCloud, но недавно он перестал работать. Ответ JSON: {«причина»: «неверный или отсутствующий заголовок источника», «ошибка»: 1} Ссылка, предоставляемая iCloud, имеет протокол webcal: //, но в прошлом он работал, заменяя его на https: / /.
Вот запрос cURL в PHP:
$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 и их двухфакторной аутентификацией, которую они продвигали в последнее время. Если это причина, я нашел, где можно получить пароль для конкретного приложения от iCloud, но не уверен, как это реализовать здесь.
Возможно, уже слишком поздно, чтобы помочь, но это может работать только для опубликованных (совместно используемых, только для чтения) календарей. Я попробовал это с одним из моих (и повторил $ response) и получил все события для моего календаря.
CURLOPT_URL => 'https://p35-calendars.icloud.com/published/2/f3en8ZL-G5cgxxxxxxxxx'
Других решений пока нет …