从 iCloud API 获取联系人列表

Posted

技术标签:

【中文标题】从 iCloud API 获取联系人列表【英文标题】:Get Contact List From ICloud API 【发布时间】:2018-08-01 09:04:18 【问题描述】:

使用以下 URL 请求 iCloud API 并登录

string url = "https://setup.icloud.com/setup/ws/1/login?clientBuildNumber=1P24&clientId=" + RANDOM_GUID;

从上面的 url 响应中获取服务器 url 和 dsid。 使用以下代码进一步请求联系人列表

var localUrl2 = "https://p66-contactsws.icloud.com/co/startup?clientBuildNumber=1P24&clientId=" + RANDOM_GUID + "&clientVersion=2.1&dsid=" + dsid + "&locale=en-EN&order=last%2Cfirst";
var webRequest2 = (HttpWebRequest)WebRequest.Create(localUrl2);
webRequest2.Method = "GET";
webRequest2.Headers.Set("Origin", "https://www.icloud.com");
// get the X-APPLE-WEBAUTH-TOKEN and X-APPLE-WEBAUTH-USER from  webResponse.Headers.SetCookie
webRequest2.Headers.Set("X-APPLE-WEBAUTH-TOKEN",  XXXXXXX);
webRequest2.Headers.Set("X-APPLE-WEBAUTH-USER",  XXXXXXXX);

WebResponse webResponse2 = webRequest2.GetResponse();

仍然出现异常

远程服务器返回错误:(421) Misdirected Request.

请告诉我上面的代码有什么问题。

【问题讨论】:

Apple 可能已“关闭”此端点,但他们确实有一个官方 Web API,您可以使用 CloudKit documentation here。 请查看我尝试连接到 iCloud 联系人服务器 here。希望这对您有所帮助。 【参考方案1】:

如 cmets 中所述,Apple 已将您尝试离线访问的终点设为了 421 错误。您可以研究另一种方法来完成此操作here。

【讨论】:

以上是关于从 iCloud API 获取联系人列表的主要内容,如果未能解决你的问题,请参考以下文章

CardDAV 从 iCloud 获取所有联系人

使用 Google Scripts 从 Google People API 获取 google 联系人电子邮件目录中的电子邮件列表

Google API/获取目录联系人

如何使用活动 ID 获取联系人列表 - Mailchimp API

如何从联系人列表中获取姓名

使用 Kotlin 从联系人列表中获取联系人信息