我是一名学生正在为我的高级设计项目开发一个用于Google Home的NLP应用程序。我特别想知道:
我感谢您为从Dialogflow到我的.NET webhook实现用户身份验证/授权所提供的任何帮助或指导。
答案 0 :(得分:7)
很多问题。让我们一个接一个地尝试清理一些事情。
在Google智能助理和我的系统之间实施Google帐户关联的正确方法是什么?
首先 - 您需要了解帐户关联是。
它允许您提供一种授权用户访问您的服务的方法。 Google使用此功能将Google智能助理帐户与您系统上的帐户相关联。
由于这是针对您的系统的,因此“正确的方式”取决于您的基础架构。但总的来说 - 这意味着您将发布OAuth令牌供Google使用并交回您的webhook。预期内容的详细信息位于Actions on Google documentation。
要明确 - 您需要成为OAuth服务器。
Google帐户关联通过Dialogflow注册/验证用户是什么?
没有
嗯,大部分都没有。
如果用户尚未获得该用户的授权,它所做的就是将用户关闭到OAuth授权端点。它希望你交回它将使用的令牌。
帐户链接是否会将标头中的承载令牌返回给Dialogflow,从而返回给我的处理程序?或者我是否必须解析originalRequest
JSON对象...
身份验证令牌(您已发出,因为您是OAuth服务器)将在originalRequest.data.user.accessToken
的JSON对象中发送。
...获取用户信息,然后针对身份提供商进行验证?
您有责任验证访问令牌是您发出的令牌并且仍然有效,然后......随心所欲地做任何事情。但是,假设您将使用它来确定用户是谁。你如何做到这一点(在表中查找,将其传递给另一个服务,从JWT获取信息等)完全取决于你以及你如何实现OAuth服务以及令牌的格式是什么
如何从Dialogflow请求中获取用户的信息?
这取决于您期望的“用户信息”。默认情况下,Google和Dialogflow上的操作不会向您提供任何信息,除非您提出要求 - 并且您不会通过帐户关联提出相关信息。您可以使用Actions on Google permission system提出要求。但即使是许可系统也不会向您提供您可能想要的信息(大多数人都想要电子邮件地址 - 您无法请求)。
如果您想通过帐户关联进行操作,则需要在设置帐户时请求该信息。
我是否必须解析originalRequest JSON对象以获取用户信息?
如果您使用的是权限,那么是。
如果您不是,那么当您可以解析JSON以获取发送的内容(匿名用户ID)时,它不会仅仅通过其Google智能助理帐户向您提供信息。
帐户关联不是要访问Google帐户中的操作,而是通过Google智能助理访问您的服务时访问系统中的帐户。
验证JWT令牌后应填充HttpContext
该文章讨论了如何将Firebase身份验证用作OAuth服务器以及如何将其作为客户端进行处理。
谷歌的行动扭转了局面。 您需要成为服务器。 它是客户。
当然可以构建一个使用Firebase身份验证的服务器来验证用户是否符合您的要求,并将JWT令牌作为您的承载令牌发布,但这些都不是要求。