C# Dialogflow、Google帐户链接和ASP.NET核心API(Webhook)

C# Dialogflow、Google帐户链接和ASP.NET核心API(Webhook),c#,asp.net,firebase-authentication,actions-on-google,dialogflow-es,C#,Asp.net,Firebase Authentication,Actions On Google,Dialogflow Es,我是一名学生,正在为我的高级设计项目谷歌主页开发NLP应用程序。我特别想知道: 实现Google帐户链接的正确方法是什么?Google帐户链接为通过Dialogflow注册/验证用户提供了什么(即,从初始查询到Google登录,再返回Dialogflow,再到我的ASP.NET核心API处理程序,数据流是什么样子) 帐户链接是否将标头中的承载令牌返回到Dialogflow,从而返回到我的处理程序?或者我必须解析originalRequestJSON对象来获取用户信息,然后根据身份提供者对其进行验

我是一名学生,正在为我的高级设计项目谷歌主页开发NLP应用程序。我特别想知道:

  • 实现Google帐户链接的正确方法是什么?Google帐户链接为通过Dialogflow注册/验证用户提供了什么(即,从初始查询到Google登录,再返回Dialogflow,再到我的ASP.NET核心API处理程序,数据流是什么样子)
  • 帐户链接是否将标头中的承载令牌返回到Dialogflow,从而返回到我的处理程序?或者我必须解析originalRequestJSON对象来获取用户信息,然后根据身份提供者对其进行验证吗
  • 如何从webhook(ASP.NET核心API)中的Dialogflow请求中获取用户信息?我是否必须解析OriginalRequestJSON对象才能获得用户信息?根据我的理解,从这一点来看,HttpContext应该在验证JWT令牌之后填充。目前尚不清楚的是,如何从Dialogflow和Google帐户链接中获取令牌
    非常感谢您为实现从Dialogflow到my.NET webhook的用户身份验证/授权提供的任何帮助或指导。

    很多问题。让我们一个接一个地解决一些问题

    实现[谷歌助手和我的系统之间]谷歌账户链接的正确方法是什么

    首先,你需要了解什么是账户链接

    它允许您为授权用户访问您的服务提供一种方式。Google使用此功能将Google助手帐户连接到您系统上的帐户

    因为这是针对您的系统的,所以“正确的方法”取决于您的基础架构。但总的来说,这意味着您将发行OAuth令牌供Google使用,并将其交还给您的webhook。有关预期结果的详细信息,请参阅

    为了清楚起见-您需要成为OAuth服务器

    Google帐户链接为通过Dialogflow注册/验证用户提供了什么

    没什么

    嗯,基本上没什么

    如果OAuth授权端点还没有对该用户的授权,那么它所要做的就是将该用户交给OAuth授权端点。它希望您归还它将使用的代币

    帐户链接是否将标头中的承载令牌返回到Dialogflow,从而返回到我的处理程序?或者我必须解析
    originalRequest
    JSON对象

    auth令牌(您已经发出,因为您是OAuth服务器)将在JSON对象中的
    originalRequest.data.user.accessToken
    处发送

    …获取用户信息,然后根据身份提供程序对其进行验证

    您负责验证访问令牌是否是您颁发的且仍然有效,然后。。。你想用它做什么就做什么。然而,我们假设您将使用它来确定用户是谁。如何做到这一点(在表中查找、将其传递给另一个服务、从JWT中获取信息等)完全取决于您以及您如何实现OAuth服务以及令牌的格式

    如何从Dialogflow请求中获取用户信息

    这取决于你期望的“用户信息”。默认情况下,Google和Dialogflow上的操作不会向您提供任何信息,除非您提出要求,而且您也不会通过帐户链接提出要求。您可以通过使用。但即使是许可系统也不会给你你想要的信息(大多数人想要电子邮件地址——你不能要求)

    如果你想通过账户链接实现这一点,你需要在设置他们的账户时请求这些信息

    我是否必须解析OriginalRequestJSON对象才能获得用户信息

    如果您正在使用权限,则选择“是”

    如果您没有,那么虽然您可以解析JSON以获取发送的任何信息(匿名用户ID),但它不会仅从他们的Google助手帐户中提供信息

    帐户链接并不是要访问他们在谷歌帐户上的操作,而是当他们通过谷歌助手访问你的服务时,访问你系统中的帐户

    应在验证JWT令牌后填充HttpContext

    这篇文章讨论了使用Firebase身份验证作为OAuth服务器,以及如何将其作为客户端处理

    谷歌的行动扭转了这一局面。你需要成为服务器。是客户


    如果您愿意的话,当然可以构建一个使用Firebase身份验证对用户进行身份验证的服务器,并发布JWT令牌作为您的承载令牌,但这两者都不是必需的。

    非常感谢您的深入回复!我现在肯定对身份验证流程有了更好的理解。