因此,我已设法根据此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终结点?
答案 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方法。要获取名称和电子邮件地址字段,您可以使用诸如
之类的URLhttps://people.googleapi.com/v1/people/me?personFields=names,emailAddresses
plus.people.get类似,但以不同的格式返回信息。在这种情况下,您将使用诸如
之类的URLhttps://www.googleapis.com/plus/v1/people/me