使用Windows Live / OneDrive REST API获取联系人的电话号码和电子邮件

时间:2011-07-22 04:58:55

标签: contacts windows-live live-sdk outlook.com onedrive

是否有人成功使用Live SDK(也称为OneDrive SDK)来检索用户联系人的电子邮件地址和/或电话号码?

我能做的最好的是获取用户联系人的个人资料,但它只包含散列电子邮件地址和没有电话号码,例如:

{
  "id": "contact.1e680c06000000000000000000000006",
  "first_name": "James",
  "last_name": "Cameron",
  "name": "James Cameron", 
  "gender": null,
  "is_friend": false, 
  "is_favorite": false,
  "user_id": null, 
  "email_hashes": [ "3972d8781911deba416ecf8e44dcc5f4dae92ab9aac58520bcfa480c31ea38f5", "301e45d554a7978c2a8ef1e662876411dfbca4b89535d2362dff3f6d786366b7" ],
  "updated_time": "2011-07-21T20:31:11+0000"
}

3 个答案:

答案 0 :(得分:6)

您需要做的就是将以下范围添加到您要求的范围列表中:

“wl.contacts_emails”

e.g。

WL.login({scopes: ["wl.contacts_emails"]});

答案 1 :(得分:4)

使用隐藏的作用域,虽然没有官方支持,但我可以确认它们目前在5.6版上工作,尽管MSDN论坛告诉你他们不会。

对于使用wl.contacts_emails的电子邮件,对于电话号码,请使用wl.contacts_phone_numbers

答案 2 :(得分:2)

根据此文件:http://msdn.microsoft.com/en-us/windowslive/hh278351

您只能拥有数据库中已有联系人的电子邮件。这意味着Microsoft希望您计算网站数据库中所有电子邮件地址的哈希值。一旦你进行了联系人导入,你可以将你的哈希值与他们在响应中给你的哈希值进行比较,并从你的数据库中检索具有匹配哈希值的电子邮件:

这是原始文本:

  

要使您的网站参与此方案,您必须创建属于您网站的每个注册用户的每个电子邮件地址的哈希值。每个哈希都必须遵循Live Connect API识别的特定格式。为每个注册用户的电子邮件地址创建哈希后,可以将哈希列表与Live Connect为访问用户的联系人生成的电子邮件地址哈希列表进行比较。每个匹配的哈希表示您网站的注册用户,该用户也是访问用户的联系人之一。

唯一可以绕过我的唯一方法是进行网站抓取或弄清楚如何触发自动联系人导出并只处理导出的文件。