谷歌与联系人API的People API

时间:2016-06-08 07:18:10

标签: android android-contacts google-contacts google-people

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

C

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

Table_C

我想知道他们两者之间是否有任何差异,我必须使用哪一个以获得更好的结果,或者我错过了什么。请建议。感谢.. !!

2 个答案:

答案 0 :(得分:3)

People API更新。人工智能API通过Google's blog announcement阅读,简化了对Google+ API和联系人API的单独调用。现在你只需要使用一个。

  

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

获取用户list of connections时,请务必在使用时指定correct scopes

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

在People API和Contacts API之间检查link for similarities and differences

答案 1 :(得分:1)

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

URL: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,您可以查询q参数,我不认为人们api提供此功能。我认为通过关键词过滤搜索的能力对于减少请求大小非常重要。