Dialogflow、Google 帐户链接和 ASP.NET 核心 API(Webhook)
Dialogflow, Google Account Linking and ASP.NET Core API (Webhook)
我是一名学生,正在为我的高级设计项目 Google Home 开发 NLP 应用程序。我特别想知道:
- 实施Google帐户链接的正确方法是什么?Google帐户链接通过 Dialogflow 为 registering/authenticating 用户提供什么(即从初始查询到Google 登录,返回到 Dialogflow,然后到我的 ASP.NET 核心 API 处理程序)。
- 帐户链接 return header 中的不记名令牌是否返回到 Dialogflow,从而返回到我的处理程序?或者我是否必须解析 originalRequest JSON object 以获取用户信息然后根据身份提供者对其进行验证?
- 如何从我的 webhook(ASP.NET 核心 API)中的 Dialogflow 请求中获取用户信息?我是否必须解析 originalRequest JSON object 才能获取用户信息?根据我的理解,从这个很棒的 tutorial,应该在验证 JWT 令牌后填充 HttpContext。尚不清楚的是如何从 Dialogflow 和 Google 帐户链接中获取令牌。
感谢您为实现用户 authentication/authorization 从 Dialogflow 到我的 .NET webhook 提供的任何帮助或指导。
很多问题。让我们一一列举,并尝试弄清楚一些事情。
实施 Google 帐户链接 [在 Google 助手和我的系统之间] 的正确方法是什么?
首先 - 您需要了解什么是帐户链接 。
它可以让您提供一种方式来授权用户访问您的服务。 Google 使用它来将 Google 助理帐户连接到您系统上的帐户。
由于这是针对您的系统的,因此 "correct way" 取决于您的基础架构。但总的来说 - 这意味着您将为 Google 颁发 OAuth 令牌以供使用并返回给您的 webhook。预期的详细信息在 Actions on Google documentation.
中
明确一点 - 您需要成为 OAuth 服务器。
Google 帐户链接通过 Dialogflow 为 registering/authenticating 用户提供什么?
没有。
嗯,基本上什么都没有。
它所做的只是将用户移交给您的 OAuth 授权端点(如果它还没有对该用户的授权)。它希望您交回它将使用的令牌。
帐户链接 return header 中的不记名令牌是否返回到 Dialogflow,从而返回到我的处理程序?或者我必须解析 originalRequest
JSON object...
授权令牌(您已颁发,因为您是 OAuth 服务器)将在 JSON object 中发送至 originalRequest.data.user.accessToken
。
...获取用户信息然后根据身份提供者对其进行验证?
您有责任验证访问令牌是您颁发的并且仍然有效,然后...用它做任何您想做的事。然而,有人假设您将使用它来确定用户是谁。你如何做到这一点(在 table 中查找它,将它传递给另一个服务,从 JWT 中获取信息等)完全取决于你以及你如何实现 OAuth 服务以及格式是什么令牌是。
如何从 Dialogflow 请求中获取用户信息?
这取决于 "user information" 您的期望。默认情况下,Actions on Google 和 Dialogflow 不会向您提供任何信息,除非您提出要求——而且您不会通过帐户链接要求提供这些信息。您通过使用 Actions on Google permission system 请求它。但即使是权限系统也不会为您提供您可能需要的信息(大多数人想要电子邮件地址 - 您无法请求)。
如果您想通过帐户链接进行操作 - 您需要在设置他们的帐户时请求该信息。
我是否必须解析原始请求 JSON object 才能获取用户信息?
如果您正在使用权限,那么可以。
如果您不是,那么虽然您可以解析 JSON 以获取发送的任何内容(匿名用户 ID),但它不会仅向您提供来自他们的 Google 助手的信息帐号。
帐户链接不是要访问他们在 Google 帐户上的操作 - 它是关于在他们通过 Google 助手访问您的服务时访问您系统中的帐户。
验证 JWT 令牌后应填充 HttpContext
那篇文章讨论了将 Firebase 身份验证用作 OAuth 服务器以及如何将其作为客户端进行处理。
Google 的行动扭转了局面。 你需要当服务员。 它是客户端
当然可以构建一个使用 Firebase 身份验证对用户进行身份验证的服务器,如果这是您想要做的,并发布 JWT 令牌作为您的不记名令牌,但这些都不是要求。
我是一名学生,正在为我的高级设计项目 Google Home 开发 NLP 应用程序。我特别想知道:
- 实施Google帐户链接的正确方法是什么?Google帐户链接通过 Dialogflow 为 registering/authenticating 用户提供什么(即从初始查询到Google 登录,返回到 Dialogflow,然后到我的 ASP.NET 核心 API 处理程序)。
- 帐户链接 return header 中的不记名令牌是否返回到 Dialogflow,从而返回到我的处理程序?或者我是否必须解析 originalRequest JSON object 以获取用户信息然后根据身份提供者对其进行验证?
- 如何从我的 webhook(ASP.NET 核心 API)中的 Dialogflow 请求中获取用户信息?我是否必须解析 originalRequest JSON object 才能获取用户信息?根据我的理解,从这个很棒的 tutorial,应该在验证 JWT 令牌后填充 HttpContext。尚不清楚的是如何从 Dialogflow 和 Google 帐户链接中获取令牌。
感谢您为实现用户 authentication/authorization 从 Dialogflow 到我的 .NET webhook 提供的任何帮助或指导。
很多问题。让我们一一列举,并尝试弄清楚一些事情。
实施 Google 帐户链接 [在 Google 助手和我的系统之间] 的正确方法是什么?
首先 - 您需要了解什么是帐户链接 。
它可以让您提供一种方式来授权用户访问您的服务。 Google 使用它来将 Google 助理帐户连接到您系统上的帐户。
由于这是针对您的系统的,因此 "correct way" 取决于您的基础架构。但总的来说 - 这意味着您将为 Google 颁发 OAuth 令牌以供使用并返回给您的 webhook。预期的详细信息在 Actions on Google documentation.
中明确一点 - 您需要成为 OAuth 服务器。
Google 帐户链接通过 Dialogflow 为 registering/authenticating 用户提供什么?
没有。
嗯,基本上什么都没有。
它所做的只是将用户移交给您的 OAuth 授权端点(如果它还没有对该用户的授权)。它希望您交回它将使用的令牌。
帐户链接 return header 中的不记名令牌是否返回到 Dialogflow,从而返回到我的处理程序?或者我必须解析 originalRequest
JSON object...
授权令牌(您已颁发,因为您是 OAuth 服务器)将在 JSON object 中发送至 originalRequest.data.user.accessToken
。
...获取用户信息然后根据身份提供者对其进行验证?
您有责任验证访问令牌是您颁发的并且仍然有效,然后...用它做任何您想做的事。然而,有人假设您将使用它来确定用户是谁。你如何做到这一点(在 table 中查找它,将它传递给另一个服务,从 JWT 中获取信息等)完全取决于你以及你如何实现 OAuth 服务以及格式是什么令牌是。
如何从 Dialogflow 请求中获取用户信息?
这取决于 "user information" 您的期望。默认情况下,Actions on Google 和 Dialogflow 不会向您提供任何信息,除非您提出要求——而且您不会通过帐户链接要求提供这些信息。您通过使用 Actions on Google permission system 请求它。但即使是权限系统也不会为您提供您可能需要的信息(大多数人想要电子邮件地址 - 您无法请求)。
如果您想通过帐户链接进行操作 - 您需要在设置他们的帐户时请求该信息。
我是否必须解析原始请求 JSON object 才能获取用户信息?
如果您正在使用权限,那么可以。
如果您不是,那么虽然您可以解析 JSON 以获取发送的任何内容(匿名用户 ID),但它不会仅向您提供来自他们的 Google 助手的信息帐号。
帐户链接不是要访问他们在 Google 帐户上的操作 - 它是关于在他们通过 Google 助手访问您的服务时访问您系统中的帐户。
验证 JWT 令牌后应填充 HttpContext
那篇文章讨论了将 Firebase 身份验证用作 OAuth 服务器以及如何将其作为客户端进行处理。
Google 的行动扭转了局面。 你需要当服务员。 它是客户端
当然可以构建一个使用 Firebase 身份验证对用户进行身份验证的服务器,如果这是您想要做的,并发布 JWT 令牌作为您的不记名令牌,但这些都不是要求。