Dialogflow、Google 帐户链接和 ASP.NET Core API (Webhook)

2024-01-08

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

  1. 实现 Google 帐户链接的正确方法是什么?Google 帐户链接为通过 Dialogflow 注册/验证用户提供了什么(即从初始查询到 Google 登录、返回 Dialogflow,然后到我的 ASP.NET Core 的数据流是什么样的) API 处理程序)。
  2. 帐户链接是否会将标头中的不记名令牌返回给 Dialogflow,从而返回给我的处理程序?或者我必须解析原始请求JSON 对象获取用户信息然后根据身份提供者验证它?
  3. 如何从 Webhook (ASP.NET Core API) 中的 Dialogflow 请求获取用户信息?我是否必须解析originalRequest JSON 对象才能获取用户信息?根据我的理解,以及这很棒的tutorial https://blog.markvincze.com/secure-an-asp-net-core-api-with-firebase/, the HttpContext应在验证 JWT 令牌后填充。目前尚不清楚的是如何从 Dialogflow 和 Google 帐户链接中获取令牌。

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


很多问题。让我们一一分析并尝试澄清一些事情。

[在 Google Assistant 和我的系统之间] 实施 Google 帐户链接的正确方法是什么?

首先 - 您需要了解什么是帐户链接is.

它允许您提供一种授权用户访问您的服务的方法。 Google 使用它将 Google Assistant 帐户连接到您系统上的帐户。

由于这不利于您的系统,因此“正确的方法”取决于您的基础设施。但总的来说 - 这意味着您将颁发 OAuth 令牌供 Google 使用并交还给您的 webhook。预期的详细信息位于Google 文档上的操作 https://developers.google.com/actions/identity/.

需要明确的是——您需要成为 OAuth 服务器.

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

Nothing.

嗯,基本上什么都没有。

如果尚未获得该用户的授权,它所做的就是将用户移交给您的 OAuth 授权端点。它希望您交回它将使用的令牌。

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

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

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

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

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

这取决于您期望的“用户信息”。默认情况下,除非您提出要求,否则 Actions on Google 和 Dialogflow 不会向您提供任何信息 - 并且您不会通过帐户链接提出要求。您可以通过使用对 Google 权限系统的操作 https://developers.google.com/actions/identity/user-info#user_name_and_location。但即使是许可系统也不会为您提供您可能想要的信息(大多数人想要电子邮件地址 - 您无法请求)。

如果您想通过帐户链接来完成此操作 - 您需要在设置帐户时请求该信息。

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

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

如果您不是,那么虽然您可以解析 JSON 以获取发送的任何内容(匿名用户 ID),但它不会只为您提供来自其 Google Assistant 帐户的信息。

帐户关联并不是要访问他们的 Actions on Google 帐户,而是要在他们通过 Google 助理访问您的服务时访问您系统中的帐户。

验证 JWT 令牌后应填充 HttpContext

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

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

如果您愿意的话,当然可以构建一个使用 Firebase 身份验证对用户进行身份验证的服务器,并颁发 JWT 令牌作为您的不记名令牌,但这都不是要求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dialogflow、Google 帐户链接和 ASP.NET Core API (Webhook) 的相关文章

  • 如何使用 ViewBag 创建 BaseController

    我需要执行以下操作 我已经准备好一些控制器并正在运行 但现在我想创建一个BaseController 我的每一个Controllers应该像这样继承它 public class MySecondController BaseControll
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 为什么极端下派生类(多重虚拟继承)的大小包括超类成员大小的两倍?

    include
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData

随机推荐

  • iPhone,如何检测拍摄图像时的方向

    有什么方法可以检测拍摄图像时手机的方向吗 我在 UIView 上有一个 UIImageView 我正在使用 UIImagePicker 来拍照或从相机胶卷中选择一张照片 但是 如果图像是在横向模式下拍摄的 我想检测到这一点并调整图像视图的大
  • 异步 - 留在当前线程上?

    我读过埃里克 利珀特的article http blogs msdn com b ericlippert archive 2010 10 29 asynchronous programming in c 5 0 part two whenc
  • 设置 Vaadin 会话超时参数

    我正在使用 Vaadin 7 1 7 但我不知道如何设置session timeout参数 例如 1 分钟 据我所知 Vaadin 7 x x 不会产生web xml 它用 VaadinServletConfiguration注释 但似乎没
  • 如何使用 browserify 包含非节点模块

    我想在应用程序中使用依赖项管理 并遇到了 require js 和 browserify 我无法决定选择哪一个 这将是一个决定性因素 任何人都可以告诉我如何将定制的 javascript 模块 非节点模块 包含到我的 js 中 我发现 br
  • Android 上的自定义鼠标指针

    当使用现代版本的 Android Honeycomb 或更高版本 时 如果硬件合适 则支持显示鼠标指针 例如 在 ASUS Transformer 或 Toshiba AC100 笔记本电脑上 是否有任何 API 允许在这些设备之一上运行的
  • 如何使用 Mocha 和 Nock 重新测试相同的 URL?

    我正在使用 Mocha Chai Sinon Proxyquire 和 Nock 对于这个特定的测试场景 针对该场景提出这个问题 希望多次测试完全相同的 URL 每次都在一个单独的测试中 期望得到不同的响应 例如 没有商家 Feed 的响应
  • “漂白”文件中的这个 perl 行有什么作用?

    我有一些已被 漂白 的 perl 文件 不知道它是否来自 ACME Bleach 或类似的东西 我对 Perl 不太熟悉 我想了解启动文件的单行代码如何解码后面的空格 lt lt y r n d pack b eval die 文件的其余部
  • Spring security ldap:找不到元素“ldap-authentication-provider”的声明

    遵循 spring security 文档 http static springsource org spring security site docs 3 0 x reference ldap html http static sprin
  • 如何使用 ng-click 获取 DOM 元素

    我有一些元素 例如
  • add_axes 和 add_subplot 之间有什么区别?

    在之前的一个answer https stackoverflow com a 43283905有人推荐我使用add subplot代替add axes正确显示轴 但搜索文档我无法理解何时以及为何应该使用这些函数之一 谁能解释一下这些差异吗
  • Python 中 numpy 整数数组的整数和元素的类型提示

    我有一个函数应该接受带有整数值的参数 比方说 def print age in another format age int gt float 但是 此代码适用于以下环境 numpy被大量使用 因此用户可能会编写如下内容 a np arra
  • 构造函数中冒号后面的变量[重复]

    这个问题在这里已经有答案了 我仍在学习 C 并试图理解它 我正在查看一些代码并看到 point3 float X float Y float Z x X y Y z Z lt what is this used for 构造函数参数旁边的
  • 在 jQuery 中获取下一个兄弟的最简洁的方法

    http jsfiddle net mplungjan H9Raz http jsfiddle net mplungjan H9Raz 经过对 next a 等的相当多的测试 我终于找到了一个有效的 我只是想知道为什么 next a 没有
  • 强制方向改变有时不起作用

    当在我的应用程序中按下某个按钮时 视图应该将方向从纵向更改为 景观 当用户回来时 视图控制器应该变回纵向 但 有时方向不会改变或使用了错误的视图框架 这是我的代码 void btnSignClicked CustomSignButton b
  • SQL Server:使用带 ISOWK 参数的 DATEPART 将一周的第一天更改为星期日

    我需要得到周数对于某些日期集 例如 对于 2016 年 1 月 它应该类似于 Week Number 53 lt for dates from Jan 1 to Jan 2 1 lt for dates from Jan 3 to Jan
  • 我的一项迁移未在 Laravel 4 中使用 php artisan 命令运行

    我在 Laravel 4 中运行了几个迁移 我使用php artisan migrate rollback and php artisan migrate用于填充表的命令 有趣的是 我的一项迁移已停止工作 无法回滚 所有其他人都工作正常 据
  • 如何在 Dart 中到达最后一个午夜?

    我想这在大多数语言中都是很常见的任务 但是我不清楚如何在我的 Flutter 应用程序中完成此任务 如何在 Dart 中检索最后一个午夜的 DateTime 对象 或者可能是今天 明天 昨天的任何特定时间 这应该做同样的事情 var now
  • 使用绑定挂载运行容器化 MongoDB

    我在 OCI 容器 docker io library mongo 中运行 MongoDB 我想在容器内的 data db 处挂载一个主机目录 Kubernetes 术语中的 hostPath 挂载 我在 Fedora Silverblue
  • @Value 不在扩展其他类的类中工作

    是否可以使用 Value在扩展另一个类的类中 下面是相关的代码片段 在里面Lo Controller类它工作完美 但在Lo DisplayHandler总是返回null 我能想到的唯一原因是因为它依赖于另一个类 该类没有用注释 Compon
  • Dialogflow、Google 帐户链接和 ASP.NET Core API (Webhook)

    我是一名学生 正在为我的高级设计项目开发 Google Home 的 NLP 应用程序 我特别想知道 实现 Google 帐户链接的正确方法是什么 Google 帐户链接为通过 Dialogflow 注册 验证用户提供了什么 即从初始查询到