我一直在为Google的Takeout服务开发一个Hangouts.json解析器,该服务从json文件中获取所有对话,附件和杂项信息,并使用所有内容填充数据库。我已经完成了所有操作,但json文件提供的唯一信息是谁发送了我能够弄清楚的GAIA ID,这是Google在其服务之间使用的唯一ID。问题是我不知道如何查找有关用户的任何其他信息,例如他们认同的姓名或他们的电子邮件。
我知道大部分信息都是公开的,因为您可以使用GAIA ID并将其放入以下网址:https://plus.google.com/u/0/#####################/about
,其中#是GAIA ID。此页面将公开显示其屏幕名称。如果电子邮件地址未知,则可以使用以下内容推断出同样的事情:reply-#####################@profiles.google.com
此处也可以用来联系他们。
理想情况下,我希望能够查找用户的屏幕名称,而不必至少解析该公开Google+信息页,但真正的电子邮件也会很棒。理想情况下,我喜欢API或其他资源来查找GAIA ID中的屏幕名称和/或电子邮件信息。
答案 0 :(得分:15)
重要更新
2019年3月:这个答案仍在获得投票,但Google正在撤回/撤回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看看你会得到什么。
答案 1 :(得分:1)
通过在metadata
中请求personFields
,可以通过 People API 获得 Gaia ID 。
您可以使用Google APIs Explorer进行尝试(下面提供了示例链接)。
对于您的任何联系人(前提是他/她是Google用户),请使用people.connections/list
资源:
People API - people.connections/list - personFields=names,metadata
(为了更好地说明,我将names
的值包括在personFields
中,尽管不需要检索盖亚ID)
样本输出(1XXXXXXXXXXXXXXXXXXXX
是Gaia 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
资源
People API - people/get - personFields=metadata
在resourceName
字段中:
people/me
获取您的信息。resourceName
请求中获取的people.connections.list
值来获取其他用户信息样本输出(1XXXXXXXXXXXXXXXXXXXX
是Gaia ID):
{
"resourceName": "people/...",
"etag": "....",
"metadata": {
"sources": [
{
"type": "PROFILE",
"id": "1XXXXXXXXXXXXXXXXXXXX",
"etag": "...",
"profileMetadata": {
"objectType": "PERSON",
"userTypes": [
"GOOGLE_USER"
]
}
...
},
...
],
"objectType": "PERSON"
}
}