如何在来自特定用户的 Google People API 响应中唯一标识 Person 资源?
Posted
技术标签:
【中文标题】如何在来自特定用户的 Google People API 响应中唯一标识 Person 资源?【英文标题】:How to uniquely identity a Person resource in Google People API response from a particular user? 【发布时间】:2017-01-29 05:22:55 【问题描述】:Google People API
与 Google Plus API
不同,它不会为响应中的每个 Person
资源提供唯一的 id
。
为什么不推荐/删除此功能,以及如何在没有id
的用户联系人列表中唯一标识Person
?
【问题讨论】:
【参考方案1】:简而言之,使用resourceName
作为ID。
Google People API 是用户的联系人列表,并具有特定于用户的 ID。他们可以创建只有邮寄地址或只有姓名但没有联系信息的联系人。 Google 无法从逻辑上整理所有 Google 通讯录用户的所有这些联系人。
特定联系人或用户有一个resourceName
字段,该字段为验证用户唯一标识该资源(联系人)。您基本上想将其用作id
。这是您使用的值,例如查询People.get。
这是来自 People.connections 的单个联系人的示例响应的一部分:
"resourceName": "people/103710953423417258027",
"etag": "qwApd98gduQ=",
"metadata":
"sources": [
"type": "CONTACT",
"id": "1",
"etag": "#rj+KMFHVyHY="
,
"type": "PROFILE",
"id": "103710953423417258027",
"etag": "#4eZfef/IuMFw="
],
"objectType": "PERSON"
,
...
resourceName
本质上是该联系人的“id”,然后在metadata
字段中列出了联系人数据的来源。例如。 CONTACT
用于用户手动输入姓名/电话/电子邮件/等的 Google 通讯录条目。 PROFILE
是 Google 个人资料,通常包含 Google+ 数据。
Person resource docs 是了解有关这些价值观的更多信息的好地方。
【讨论】:
我说的是特定于用户的联系人Id
s。如果您查看Google People API
,您将不会在响应中找到任何返回的Id
字段。这是设计使然还是他们忘记包含它?
@jackofblades 我已经用resourceName
的信息更新了答案
Person 资源文档提到这一点:在添加或删除链接联系人和个人资料的字段(例如经过验证的电子邮件、经过验证的电话号码或个人资料 URL)时,资源名称可能会发生变化。 在这种情况下,我们不能将其用作Id
进行同步和更新,可以吗?
resourceName
和 source.id
是您必须使用的,所以您必须使用它们进行同步。
personMetadata 应该链接新旧资源名称,因此只要您可以更新 ID,您就应该可以将其用作同步 ID。 developers.google.com/people/api/rest/v1/people#personmetadata以上是关于如何在来自特定用户的 Google People API 响应中唯一标识 Person 资源?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Firebase 数据库锁定给来自特定(电子邮件)域的任何用户?
创建人时,有没有办法在 google people api 中添加第二个自定义字段?
使用 google people API 访问 google 连接
从 Google People API 搜索中获取姓名和电话号码