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

9

有人成功地使用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个回答

6

您只需要在请求的范围列表中添加以下范围即可:

"wl.contacts_emails"

例如:

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

4

请使用隐藏范围,虽然官方不支持,但我可以确认它们在版本5.6中目前可用,尽管MSDN论坛告诉你不可用。

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


2
根据这份文件:http://msdn.microsoft.com/en-us/windowslive/hh278351 您只能拥有已经在您数据库中的联系人的电子邮件。这意味着Microsoft希望您为网站数据库中的所有电子邮件地址计算哈希值。一旦您执行联系人导入操作,您可以将您的哈希值与响应中给出的哈希值进行比较,并从您的数据库中检索具有匹配哈希值的电子邮件:
以下是原始文本:
对于您的网站参与此场景,您必须创建每个注册用户电子邮件地址的哈希值。每个哈希值都必须遵循Live Connect API识别的特定格式。在为每个注册用户的电子邮件地址创建哈希值之后,您可以将您的哈希列表与Live Connect为访问用户的联系人生成的电子邮件地址哈希列表进行比较。每个匹配的哈希表示是您网站的注册用户,也是访问用户的联系人。
我认为唯一绕过该限制的方法是进行网站抓取或找出如何触发自动联系人导出并处理导出的文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接