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+)具有相同/相似的连接吗?另外,你试过添加scope
https://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/contacts
和 https://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:如何使用全文查询?