Импорт контактов iCloud.NET (CardDAV)
Я пытался получить контакты iCloud, связанные с моим Apple Id, но по какой-то причине это не работает. Я получаю (404) Not Found ошибку.
Я знаю, что iCloud использует CardDAV и вам нужен определенный URL-адрес для доступа к вашим контактам.
Для клиента CardDAV я использовал следующее: https://github.com/Metric/CardDavNet Для адреса сервера я попробовал несколько URL-адресов (конечно, MYUSERID - это мой реальный идентификатор пользователя):
https://p02-caldav.icloud.com/MYUSERID/carddavhome/card/ https://p02-contacts.icloud.com/MYUSERID/carddavhome/card/
Что я делаю неправильно? Я использую правильные URL сервера или есть что-то еще не так? Я надеюсь, что кто-то может направить меня в правильном направлении.
1 ответ
Второй упомянутый вами URL выглядит довольно хорошо. Но для надежного получения URL-адреса, на котором размещена ваша адресная книга, вам необходимо запросить свойство addressbook-home-set основной записи вашей учетной записи.
Подобно:
PROPFIND Depth:0 /12345/principal/
<propfind xmlns="DAV:">
<prop>
<addressbook-home-set xmlns="urn:ietf:params:xml:ns:carddav"/>
</prop>
</propfind>
и чтобы найти принципала, вы запрашиваете свойство 'Principal-URL', например, на /, с вашим установленным auth:
PROPFIND Depth:0 /
<propfind xmlns="DAV:">
<prop><principal-URL/></prop>
</propfind>
Вы также можете использовать отладочный прокси-сервер, такой как Charles или Fiddler, чтобы выяснить, что ваша платформа.NET на самом деле отправляет на сервер.