无法获取经过身份验证的用户信息,但可以从Google通讯录中获取通讯录

时间:2012-07-02 23:47:33

标签: java oauth google-api google-contacts

我遇到了一个有趣的案例,似乎表明Google Contacts API的文档不正确。

我要做的是使用以下网址获取已经授予应用权限的经过身份验证的用户的联系信息:

  

https://www.google.com/m8/feeds/contacts/default/full/contactId

通话的结果始终是状态404.但是,当我试图获得完整的地址簿时,它似乎工作正常。

  

https://www.google.com/m8/feeds/contacts/default/full

是否记录不正确或我做错了什么?如果我无法获得经过身份验证的用户的联系信息,我就无法获得整个地址簿。

我正在使用的范围是:

  

https://www.google.com/m8/feeds

谢谢, 千斤顶


其他信息。 API文档显示以下内容:

public static ContactEntry retrieveContact(ContactsService myService) {
  ContactEntry contact =
      myService.getEntry(new URL("https://www.google.com/m8/feeds/contacts/default/full/contactId"),
          ContactEntry.class);
  // Do something with the contact.
  return contact;
}

这似乎意味着“contactId”关键字应该用作URL的一部分。它对我不起作用。


澄清这个问题。目标是获取有关当前经过身份验证的用户的信息,而无需多次完成获取数据的解决方法。即使首先获取所有联系人的解决方法,我也没有看到任何经过身份验证的用户的contactId回来。

1 个答案:

答案 0 :(得分:1)

这取决于你想要得到什么。如果您致电https://www.google.com/m8/feeds/contacts/default/full,那么您正在寻找所有联系人。现在,当您取回联系人时,您可以使用https://www.google.com/m8/feeds/contacts/default/full/ {contactID}请求单个联系人的数据,其中{contactID}是完整联系人列表中字段的最后一部分。它看起来像http://www.google.com/m8/feeds/contacts/ {user email} / base / {contact id}。

因此,如果您返回完整的联系人列表,则单个联系人将有一个ID字段,如下所示:http://www.google.com/m8/feeds/contacts/{user email} / base / {联系人ID}。如果您使用上一个{联系人ID}并将其附加到通话结束时(https://www.google.com/m8/feeds/contacts/default/full/{contactID}),您将收到该联系人该联系人的信息。