我一直在为Google的Takeout服务开发Hangouts.json解析器,该解析器从json文件中获取所有对话,附件和杂项信息,并填充数据库中的所有内容。我已经完成了所有内容,但 json 文件提供的唯一信息是我能够弄清楚的谁发送了 GAIA ID,这是 Google 在其服务之间使用的唯一 ID。问题是我不知道如何查找有关用户的任何其他信息,例如他们标识的名称或电子邮件。
我知道大部分信息都是公开的,因为你可以把GAIA ID放到一个URL中,比如:https://plus.google.com/u/0/#####################/about
#是GAIA ID。此页面将公开显示他们的屏幕名称。当电子邮件地址未知时,可以使用以下命令推断出同样的事情: reply-#####################@profiles.google.com
这也可以用来联系他们。
理想情况下,我希望能够查找用户的屏幕名称,而不必至少解析该公共Google+页面,但真正的电子邮件也很棒。因此,理想情况下,我希望API或其他资源从GAIA ID中查找屏幕名称和/或电子邮件信息。
重要更新
2019 年 3 月:这个答案仍在获得投票,但谷歌正在撤回/已经撤回了 Google Plus API。
您将需要替代解决方案,因为这将不再适用。
原始回复
使用 Google Plus API:https://developers.google.com/+/api/
我没有专门测试过环聊(我从来不知道有一个 Hongouts API!),但它返回来自其他 API 的给定 ID 的详细信息。
你可以在这里测试一下:https://developers.google.com/apis-explorer/#p/plus/v1/plus.people.get 看看你会得到什么。
Gaia ID 可以通过请求personFields
中的metadata
来通过 People API 获取。
您可以使用Google APIs资源管理器尝试(下面提供了示例链接)。
对于您的任何联系人(前提是他/她是谷歌用户),请使用people.connections/list
资源:
人员 API - 人员.连接/列表 - 人员字段=名称,元数据(为了更好地说明,我在personFields
中包含names
值,尽管检索盖亚 ID 不是必需的)
示例输出(1XXXXXXXXXXXXXXXXXXXX
是盖亚 Id):
{
"connections": [
{
"resourceName": "people/c42",
"etag": "...",
"metadata": {
"sources": [
{
"type": "CONTACT",
...
},
{
"type": "PROFILE",
"id": "1XXXXXXXXXXXXXXXXXXXX",
...
"profileMetadata": {
"objectType": "PERSON",
"userTypes": [
"GOOGLE_USER"
]
}
}
....
],
"objectType": "PERSON"
}
"names": [
{
...
"displayName": "John Doe",
...
}
]
},
...
}
对于您自己或使用people/get
资源的任何用户
人员 API - 人员/获取 - 人员字段=元数据
在resourceName
字段中:
- 使用
people/me
获取您的信息。 - 使用先前在
people.connections.list
请求中检索到的resourceName
值检索其他用户信息
示例输出(1XXXXXXXXXXXXXXXXXXXX
是盖亚 ID):
{
"resourceName": "people/...",
"etag": "....",
"metadata": {
"sources": [
{
"type": "PROFILE",
"id": "1XXXXXXXXXXXXXXXXXXXX",
"etag": "...",
"profileMetadata": {
"objectType": "PERSON",
"userTypes": [
"GOOGLE_USER"
]
}
...
},
...
],
"objectType": "PERSON"
}
}
去谷歌聊天。与要查找盖亚ID的人创建聊天。在聊天窗口中标记此人(@name人)右键单击名称,单击"检查"
在那里你会找到身份证data-user-id="10xxx
人的@Name