5

在尝试使用用户的 google 帐户获取联系人时,我在使用人员 API 后遇到了一些问题。它只返回所有列出的电子邮件地址中的几个电子邮件地址。访问令牌和所有范围都已正确设置。以下代码:

People peopleService = new People.Builder(httpTransport, jsonFactory, credential)
                    .build();
ListConnectionsResponse response = peopleService.people().connections().list("people/me")
                    .setPageSize(500).setSortOrder("FIRST_NAME_ASCENDING")
                    .setAccessToken(tokenResponse.getAccessToken())
                    .setAlt("json")
                    .setRequestMaskIncludeField("person.names,person.emailAddresses,person.phoneNumbers")
                    . execute();
   connections = response.getConnections();

如果我使用谷歌的联系人 API 而不是这个,那么我得到的电子邮件地址比人多。联系人 API 的代码:

URL feedUrl = new URL("https://www.google.com/m8/feeds/contacts/default/full");
    ContactFeed resultFeed = myService.getFeed(feedUrl, ContactFeed.class);

    // Print the results
    System.out.println(resultFeed.getTitle().getPlainText());
    for (ContactEntry entry : resultFeed.getEntries()) {
          ....
          .....
          .......
 }

我想知道它们两者之间是否有任何区别,以及我必须使用哪个以获得更好的结果,或者我是否遗漏了什么。请建议。谢谢..!!

4

2 回答 2

3

People API 是最新的。通过阅读Google 的博客公告,People API 简化了对 Google+ API 和联系人 API 的单独调用。现在你只需要使用一个。

“新的 People API 使用最新的协议和技术,最终将取代使用 GData 协议的 Contacts API”

在获取用户的连接列表时,请务必在使用时指定正确的范围

https://www.googleapis.com/auth/contacts- 请求为您的应用授予对经过身份验证的用户的 Google 通讯录中的联系人的读写访问权限。 https://www.googleapis.com/auth/contacts.readonly- 请求为您的应用授予对经过身份验证的用户的 Google 通讯录中联系人的读取权限。

检查此链接以了解People API 和 Contacts API 之间的异同。

于 2016-06-09T08:03:39.320 回答
1

我不确定 java 代码是否有任何问题,但是如果您查看发出的请求,它应该是这样的:

网址:https ://content-people.googleapis.com/v1/people/me/connections?pageSize=300&requestMask.includeField=person.names%2Cperson.email_addresses&sortOrder=FIRST_NAME_ASCENDING&key=

我能够使用正确的电子邮件和姓名获得所有联系人。如果你用谷歌搜索“管理谷歌联系人”,你会看到一个联系人列表。从那里获取该数字,然后打印出应该匹配的连接数。您只需要确保 pageSize 足够大,否则您必须处理分页以获取所有联系人。

我还意识到 requestMask.includeField 对您放置的参数和空格非常敏感。“person.name,person.email_addresses”有效,“person.name,person.email_addresses”无效。

使用较旧的联系人 api,您可以查询我不认为 people api 提供此功能的 q 参数。我认为通过关键词过滤搜索的能力对于减少请求大小很重要。

于 2017-01-24T21:55:10.300 回答