根据用户ID和访问令牌获取Google用户个人资料

时间:2017-10-06 08:07:14

标签: google-api google-oauth2 dialogflow actions-on-google

因此,我已设法根据此guide将Google用户帐户链接到API.AI上的代理,并找到类似的answer

“个人资料”和“电子邮件”已添加为客户范围。

现在,助手已经将userId和AccessToken发送到我的履行webhook,在originalRequest->下; DATA->输入 - >用户

这样的事情:

"user":{
    "accessToken":"TWWM**********************bgf",
    "locale":"en-US",
    "userId":"AKL*********************exlT"
 }

到目前为止,我的accesToken始终被Google无效。

如果我查看我的令牌:

https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=TWWM**********************bgf

它呈现无效

{
    "error_description": "Invalid Value"
}

如果获得上述accessToken和UserId,如何获取基本用户个人资料信息,如名字,姓氏和电子邮件?

我应该调用哪个GoogleApi终结点?

1 个答案:

答案 0 :(得分:1)

对于初学者,此处提供的userId字段不是Google ID。它是一个匿名的,特定于助理的ID,用于在会话之间匿名跟踪某个人,但用户可以根据需要撤消该ID。通过OAuth获取其他信息没有用。

接下来,在测试期间请记住accessToken的生命周期有限 - 通常约一小时。如果您在该小时后进行测试,那么您尝试从中获取信息的端点将返回错误。 (OAuth喜欢对错误究竟是什么感到含糊。)

我不确定https://www.googleapis.com/oauth2/v3/tokeninfo端点实际上接受访问令牌。至少我找不到任何说它确实存在的文档。它主要用于交换其他令牌以获取访问令牌。

您有几个选项可以使用您请求的范围获取所需信息。 (可能超过这里提到的两个。)在这两种情况下,您都会在HTTP accessToken标头中传递Authorization

Authorization: Bearer TWWM**********************bgf

使用Google People API您将使用people.get方法。要获取名称和电子邮件地址字段,您可以使用诸如

之类的URL
https://people.googleapi.com/v1/people/me?personFields=names,emailAddresses

plus.people.get类似,但以不同的格式返回信息。在这种情况下,您将使用诸如

之类的URL
https://www.googleapis.com/plus/v1/people/me