Для доступа к календарю или напоминаниям iCloud вы используете протокол IETF под названием CalDAV. Building a CalDAV client - отличное введение о том, как это сделать. С вышеуказанным вы просто бросаете запрос GET
в API ...
Использование curl Это трехэтапный процесс, чтобы получить, скажем, имена календаря. Во-первых вам необходимо выяснить URL, представляющей свой счет ICloud (называемый Principal в WebDAV говорит):
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: «С помощью специальных приложений для входа в iCloud с сторонними приложениями потребуется 15 июня». В этом случае вам необходимо установить app-specific password для доступа CalDAV.
Показанный выше локон показывает 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
Надеется, что это поможет вам начать работу.
Спасибо за публикацию этого обширного ответа. У меня есть та же проблема, что и у OP, и попробовал вашу первую команду curl с -v (verbose) и получил 401. Я на 100% уверен, что мои учетные данные верны. То же самое можно использовать при входе в icloud.com и работе. Нет 2-FA активен. Любая идея, как отладить это? – Nicolas
Я предполагаю, что это: https://www.google.de/amp/s/9to5mac.ком/2017/05/16/приложение-Specific-пароли-удет-обязательно к знаку-в-к-ICloud-с-сторонними приложениями-с-июня-15-Хереса-хау-to make-them/amp/ – hnh
Вот и все. Благодаря! – Nicolas