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) 的相关文章

  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 2个对象,完全相同(除了命名空间)c#

    我正在使用第三方的一组网络服务 但遇到了一个小障碍 在我手动创建将每个属性从源复制到目标的方法之前 我想我应该在这里寻求更好的解决方案 我有 2 个对象 一个是 Customer CustomerParty 类型 另一个是 Appointm
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • 为什么这个 makefile 在“make clean”上执行目标

    这是我当前的 makefile CXX g CXXFLAGS Wall O3 LDFLAGS TARGET testcpp SRCS main cpp object cpp foo cpp OBJS SRCS cpp o DEPS SRCS
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • 使用 Play Integrity API 时,Firebase 电话身份验证会出现缺少客户端标识符错误

    使用 Firebase 电话身份验证注册 登录时 身份验证流程始终会启动 reCAPTCHA 流程 并在返回应用程序后发出missing client identifier error 我的设置之前适用于设备验证 安全网络 API 除了我的
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • 当Model和ViewModel一模一样的时候怎么办?

    我想知道什么是最佳实践 我被告知要始终创建 ViewModel 并且永远不要使用核心模型类将数据传递到视图 这就说得通了 让我把事情分开 但什么是Model 和ViewModel一模一样 我应该重新创建另一个类还是只是使用它 我觉得我应该重
  • 以编程方式创建 Blob 存储容器

    我有一个要求 即在创建公司时 在我的 storageaccount 中创建关联的 blob 存储容器 并将容器名称设置为传入的字符串变量 我已尝试以下操作 public void AddCompanyStorage string subDo
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • Streamwriter 覆盖 txt 文件中的文本

    有没有什么方法可以重新打开流写入器而不创建新的写入对象 因为此时 当调用 WriteOdd 时 streamwriter 正在覆盖在它之前调用的 WriteEven public void WriteEven StreamWriter wr
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • JWT - 配置授权服务器并将颁发者设置为其本身

    我正在尝试按照本指南设置授权服务器 http bitoftech net 2014 10 27 json web token asp net web api 2 jwt owin authorization server http bito
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K

随机推荐

  • 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 注册 验证用户提供了什么 即从初始查询到