Google 通讯录 API 与人员 API

Posted

技术标签:

【中文标题】Google 通讯录 API 与人员 API【英文标题】:Google Contacts API vs People API 【发布时间】:2016-07-23 01:38:09 【问题描述】:

上面的 2 个 API 有问题。鉴于下一个场景:我有 2 个不同的谷歌帐户。一个不使用 Google+ 的帐户和另一个使用 Google+ 的帐户

在第一个不使用 Google+ 的帐户上使用 Contacts API 时,我可以看到我的所有联系人:

GET /m8/feeds/contacts/<email>/full

使用 Google+ 的第二个帐户也是如此。

当我为第一个不使用 Google+ 的帐户使用 People API 时,我得到一个空响应(实际上我得到的是下一个同步令牌:

GET https://people.googleapis.com/v1/people/me/connections

下一个作用域:

https://www.googleapis.com/auth/contacts

返回:


  "nextSyncToken": "CMe6...."

第二个帐户(使用 Google+)的同一个呼叫就像一个魅力

这两个帐户之间的唯一区别是 Google+,People API 是否可能仅适用于具有 Google+ 的帐户?还是我错过了其他东西

【问题讨论】:

帐户有权访问哪些范围? 您确定您的第一个帐户(非 Google+)与您的第二个帐户(Google+)具有相同/相似的连接吗?另外,你试过添加scopehttps://www.googleapis.com/auth/contacts.readonly吗? 我也试过https://www.googleapis.com/auth/contacts.readonly范围,得到了同样的结果 @abraham 我使用https://www.google.com/feeds 作用域作为联系人 API 和我尝试过的人员 API https://www.googleapis.com/auth/contactshttps://www.googleapis.com/auth/contacts.readonly 现在似乎无法在 APIs Explorer 中找到联系人 API,您是否使用此处的示例代码? :developers.google.com/google-apps/contacts/v3 【参考方案1】:

我发现了这两个 API 之间的区别,这与其中一个帐户是否连接到 Google+ 无关

People API 只会获取"My contacts" 联系人下的联系人,而Contacts API 也会获取其他联系人列表("Other contacts""Most contacts"、...)

【讨论】:

我想使用 People API 获取“其他联系人”。你找到那些了吗?我只得到“我的联系人” @heffaklump 您无法使用人员 API 获取 Other Contacts。唯一的方法是使用Contacts API @sachar - 你能告诉我如何使用联系人 API 获取“其他联系人”组吗?当我列出所有组时,我没有列出它。【参考方案2】:

People API 是较新的版本。

来自与 People API 页面相关的 Google API:

Google Contacts API 将来会被弃用。推荐使用 People API 替代读取联系人数据的应用。

同样重要的是要注意,人员 API 实际上允许开发人员使用“其他联系人”,就像联系人 API 所做的那样。此外,在迁移时,您不必重新征求用户同意以下事项:

https://www.google.com/m8/feeds https://www.googleapis.com/auth/contacts https://www.googleapis.com/auth/contacts.readonly

请参阅这些链接以进一步阅读:

https://developers.google.com/people/related-apis(联系人 API 与人员 API) https://developers.google.com/people(人员 API 简介)

我基本上只是复制/粘贴了大部分内容,但希望有些人会觉得这很有帮助,因为我也很想找到这些答案 :)

【讨论】:

“People API 实际上允许开发人员使用‘其他联系人’,就像 Contacts API 所做的那样”这仍然是完全错误的。 People API 不允许创建或编辑其他联系人。 它与 myContacts 不完全相同,但它确实允许您通过 PeopleAPI 访问和操作 otherContacts 自己尝试:1. 到达developers.google.com/people/api/rest/v1/otherContacts/list 2. 设置必填字段 3. 去找人。获取,输入 resourceName 并从 otherContacts/... 更改为 people/... (另外,不要忘记新人员对象中的 etag) 4. 输入必填字段然后运行 ​​5. 转到 people.get,使用 resourceName以及用于查找联系人的更改字段。 6. 瞧,otherContact 已更新......虽然他们现在在“myContacts”而不是“otherContacts” @JoshLear 不是“googleapis.com/auth/contacts.other.readonly”范围,被认为是需要花费 20,000 美元进行安全检查的特殊敏感范围?

以上是关于Google 通讯录 API 与人员 API的主要内容,如果未能解决你的问题,请参考以下文章

Java 中的 Google 通讯录 v3 API 和 OAuth v2

Google Contacts API v3:如何使用全文查询?

通过 OAuth 2.0 和私钥(即服务帐户)访问 Google Contacts Api

通讯录

通讯录

Fragment与Activity的互相通讯