首页 文章

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

提问于
浏览
3

我是一名学生,正在为我的高级设计项目开发一个用于Google Home的NLP应用程序 . 我特别想知道:

  • 实施Google帐户关联的正确方法是什么?Google帐户关联提供了哪些通过Dialogflow注册/验证用户(即从初始查询到Google登录,返回到Dialogflow,再到我的ASP.NET的数据流是什么样的核心API处理程序) .

  • 帐户链接是否会将 Headers 中的持有者令牌返回给Dialogflow,从而返回给我的处理程序?或者我是否必须解析 originalRequest JSON对象以获取用户信息,然后针对身份提供程序对其进行验证?

  • 如何从webhook(ASP.NET Core API)中的Dialogflow请求中获取用户信息?我是否必须解析originalRequest JSON对象以获取用户信息?根据我的理解,从这个非常棒的tutorial,应该在验证JWT令牌后填充 HttpContext . 目前尚不清楚的是,如何从Dialogflow和Google帐户链接中获取令牌 .

我感谢您提供的任何帮助或指导,以实现从Dialogflow到我的.NET webhook的用户身份验证/授权 .

1 回答

  • 6

    很多问题 . 让我们一个接一个地尝试清理一些东西 .

    在Google智能助理和我的系统之间实施Google帐户关联的正确方法是什么?

    首先 - 您需要了解帐户关联是什么 .

    它允许您为授权用户访问服务的方式提供方法 . Google使用此功能将Google智能助理帐户与您系统上的帐户相关联 .

    由于这是针对您的系统的,因此"correct way"取决于您的基础架构 . 但总的来说 - 这意味着您将发布OAuth令牌供Google使用并交回您的webhook . 预期的详细信息在Actions on Google documentation中 .

    要清楚 - you need to be an OAuth server .

    Google帐户链接通过Dialogflow注册/验证用户是什么?

    没有 .

    好吧,大部分都没有 .

    如果用户尚未获得该用户的授权,它所做的只是将用户关闭到您的OAuth授权 endpoints . 它希望你交回它将使用的令牌 .

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

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

    ...获取用户信息然后针对身份提供商进行验证?

    您有责任验证访问令牌是您发出的令牌并且仍然有效,然后......随心所欲地做任何事情 . 但是,假设您将使用它来确定用户是谁 . 你如何做到这一点(在表中查找,将其传递给另一个服务,从JWT获取信息等)完全取决于你以及你如何实现OAuth服务以及令牌的格式是什么 .

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

    这取决于你提供任何信息,除非你提出要求 - 并且你没有通过账户链接提出这些信息 . 你通过Actions on Google permission system要求它 . 但即使是许可系统也获得了请求 .

    如果您想通过帐户关联来执行此操作,则需要在设置帐户时请求该信息 .

    我是否必须解析originalRequest JSON对象以获取用户信息?

    如果您正在使用权限,那么是 .

    如果您不是,那么虽然您可以解析JSON以获取发送的内容(匿名用户ID),但它不会仅向您提供其Google智能助理帐户中的信息 .

    帐户关联不是要访问他们在Google帐户上的操作 - 而是在他们通过Google智能助理访问您的服务时访问系统中的帐户 .

    验证JWT令牌后应填充HttpContext

    该文章讨论了如何将Firebase身份验证用作OAuth服务器以及如何将其作为客户端进行处理 .

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

    当然可以构建一个使用Firebase身份验证来验证用户身份的服务器(如果您愿意这样做),并将JWT令牌作为您的承载令牌发布,但这些都不是要求 .

相关问题