问题标签 [account-linking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
720 浏览

oauth-2.0 - Google 模拟器上的 Actions 中的帐户关联重定向

我正在使用新的 Action on Google Java API构建一个应用程序。据我了解,在 Alexa 中处理帐户链接时,初始流程(当JSON 请求中的userId为null时)应重定向到登录表单以征得用户同意:

然而,在 AoG 模拟器中进行测试时,我没有看到任何重定向正在执行。我看到以下错误:

在此处输入图像描述

我的帐户链接设置:

在此处输入图像描述

其中授权 URL 重定向到本地模拟身份验证服务,该服务应该显示登录表单。它是可访问的(通过localhost和通过 ssh 隧道,在这种情况下由serveo.net反向代理提供)。为什么谷歌不把我重定向到那里?

有人可以指导我如何在帐户链接流程中进行此初始握手,我在哪里可以看到从网络挂钩发送的登录意图应该触发的表单?

正如错误消息所暗示的那样,我宁愿不使用我的手机,因为我在 AoG 模拟器中测试的帐户与我在手机上的用户 ID 不同。

使用是什么意思Simulator as a Speaker?我的设置中缺少什么?

是否有另一个谷歌应用程序可以更好地模拟物理设备,类似于Alexa 的模拟器

0 投票
1 回答
3614 浏览

oauth-2.0 - “MalformedResponse:由于语音响应为空,无法将 Dialogflow 响应解析为 AppResponse”在 OAuth 帐户链接流程中

我们正在使用新发布的Java/Kotlin API通过 Dialogflow 实现来实现 Actions on Google 。

它被称为Speech Bank

在智能手机上进行帐户链接过程测试时,用户收到 MalformedResponse 错误,阻止了流程的完成并随后成功切换回常规流程。

日志(详情如下)包含MalformedResponse: Failed to parse Dialogflow response into AppResponse because of empty speech response消息,用户Speech bank isn't responding right now. Try again soon.在她的设备上接收消息。

以下是有关我们设置的更多详细信息:

在此处输入图像描述

该操作配置为使用我们自己的符合 OAuth 2 的模拟基础设施进行帐户链接。

在此处输入图像描述

RawText在 Dialogflow 中配置了一个意图(称为),其余交互将由自己的内部应用程序通过其 Web 挂钩处理。

在此处输入图像描述

到目前为止,这是状态机在 Java 中的编码方式:


如上配置,OAuth 授权代码流执行正常的 OAuth 2 步骤:

  • 命中/login端点以提供凭据

  • 点击/token端点获取令牌(它的值token1在下面的日志中。我们有一个工具来生成和注入我们自己的令牌,这是一个测试环境,所以我们生成了这个token1值,它似乎已成功合并到后续请求中。)

以下是交互失败的详细屏幕截图,并附有 Actions on Google 控制台提供的日志:

在此处输入图像描述

根据上面的设置描述,任何人都可以帮我们弄清楚是什么导致了MalformedResponse异常,以及需要改变什么来消除它。

这个例外是如此模糊,以至于它带来了无数的问题,让人不知从何开始接近它。我将在这里仅列出一些,非常感谢一些指导。

  • AoG 和 Dialogflow 中的意图名称之间是否存在关联?他们应该遵循任何命名约定吗?错误的原因可能在于它们以某种方式被错误命名吗?

  • MalformedResponse 是否可以解释为响应中缺少特定字段?由于 Google 选择公开不同消息格式(Dialogflow 和 AppResponse)之间转换的内部工作原理,是否在某处列出了 Dialogflow 响应所需的字段?

  • 这是否暗示即使在这种情况下传递的 OAuth 消息也需要包含一些语音?

  • 最初,userId从 Dialogflow 收到的数据似乎始终是null,但查询文本似乎填充了GOOGLE_ASSISTANT_WELCOME,因此我们基于它的假设来启动帐户链接流逻辑null。这是一个正确的假设吗?

  • 在什么情况下userId最初会被填充(比如在 Alexa 中,它是在为用户启用技能时自动生成的)以便else触发上述条件?

  • 由身份验证基础设施颁发并由 AoG 支持的 OAuth 令牌是否应该采用任何特定格式,即 OIDC 或 JWT。它可以是任何随机字符串吗?仍然是token1AoG 用语中的有效令牌(就像在 Alexa 中一样)?

  • 任何配置错误的 Java 意图处理程序?我们应该对来自 AoG 帐户链接流程的响应中的哪个意图名称做出反应?

  • 是否有一个包罗万象的意图名称,一个可以合并到 Java 应用程序中的处理程序,以促进对上述内容的进一步调试?

  • “空话响应”是什么意思,我们没有提供哪些预期值并导致损坏?

  • 我们配置了哪些不应该配置的东西?

如果这很重要,这里是来自我们 webhook 的日志:

0 投票
1 回答
146 浏览

dialogflow-es - 如何在 Google Assistant 上的帐户链接中替换默认响应

作为为与以下拓扑链接的帐户配置的操作的一部分:

Actions-on-Google->Dialogflow->Webhook ,

我看到 Google 助理在通过帐户链接流程之前注入了自己的消息,如下所示:

"I need to link your <action-name> to Google. Is that ok?"

链接流程由 webhook 中的以下内容触发:

我希望能够用自定义消息替换上述库存消息,但是当使用我们自己的消息将上下文附加到登录卡时,如下所示:

我仍然看到最后附加的默认消息:

如何用我自己的替换Google 默认消息?

0 投票
0 回答
393 浏览

dialogflow-es - 如何在 Dialogflow 中获取用户 ID 和 OAuth 访问令牌

在 webhook(用Java编写)中,作为配置为使用以下拓扑链接帐户的操作的一部分:

我正在尝试从传入请求 中提取userId和 OAuth accessToken 。

两个初始请求(在链接流程开始之前):

和后链接一个:

似乎包含该userId领域。唯一的accessToken开始出现在链接之后,这是正确的。

但是,在我的 webhook 中,在这两种情况下,我都使用以下内容来捕获userIdand accessToken(除了其他东西):

在这两种情况下,我都看到它们都返回为null

预帐户链接:

发布帐户链接:

通过 Java API,queryText似乎是唯一一个提取实际值的方法,但对于来自传入请求的其他字段而言并非如此,它们都是null.

我有一些问题:

  • Google在什么时候userId创建了 get 以及触发了它的创建?换句话说,是否存在userId请求中的实际是的情况null,在其值生成之前,我是否能够在进入我的 webhook 的请求中看到这种情况?

  • 如何从进入我的 webhook 的请求中提取其他字段?我做错了什么,以至于通过 Java API 解析请求返回的结果与原始请求中看到的值不同?

0 投票
1 回答
141 浏览

alexa - Alexa 帐户与第 3 方资源服务器的链接

我正在研究一项技能,我想将该技能链接到第 3 方 api。问题是 3p 服务器没有启用 Oath 并且在用户名/密码身份验证上工作。

我想了解我在这里的选择。我可以创建一个适用于 oath 身份验证的中间件,然后通过用户名/密码调用 api 吗?

任何关于这方面的指示都会很好地帮助我前进。

0 投票
1 回答
553 浏览

oauth-2.0 - 对 google 的操作,Oauth 帐户链接

我一直在尝试将助手操作连接到我的后端服务器 我正在使用自己的 Oauth 服务器并按照 https://developers.google.com/actions/identity/oauth2?oauth=code上的说明进行操作 我正在使用 actions_intent_Sign_in dialogflow 事件意图(如https://actions-on-google.github.io/actions-on-google-nodejs/classes/conversation_helper.signin.html)当我使用我的操作登录时,我得到登录窗口我的服务器,我进行了帐户链接,我可以看到我在我的服务器上生成了令牌,但我在 (conv.user.access.token) 中找不到令牌

这是我使用“google sdk 上的操作”的意图的代码

并且响应返回为

conv 的用户对象只有这个数据

我不知道在哪里可以找到访问/刷新令牌,或者是否需要从我错过的 oauth 服务器发送帖子

0 投票
0 回答
47 浏览

actions-on-google - 在用户提供输入之前,Google 新 SignIn() 上的操作正在取消

我们正在使用 Dialogflow V2 API 在 Google 上创建一个 Action。我们正在使用 firebase 云功能来实现我们的功能,并且我们正在使用外部 rest api 来进行 crud 操作。

我们有一个未部署的动作,我在模拟器中测试过。对话流程是

  1. 提示用户登录,即new SignIn()
  2. 他们被问到他们想做什么,他们回答
  3. 他们的响应使用他们的凭据保存在我们的后端

new SignIn()在模拟器中工作,但是当我在 Google Home Mini 上进行测试时,SignIn() 的响应就好像用户在他们有时间响应之前拒绝了登录提示

在 Google Home Mini 上测试包含帐户关联的操作是否有一些限制?

包含的意图new SignIn()是我的欢迎意图,这会导致问题吗?

这是处理 SignIn() 的两个意图。开始登录意图由欢迎事件触发

0 投票
1 回答
328 浏览

node.js - 如何在 Dialogflow 实现中检测返回到 Android 上的 Google 助理的用户?

我有一个正在运行的网站,用户已经拥有帐户。我正在尝试创建一个可在 Android 上访问的 Google Assistant 代理,以帮助用户访问他们的信息。

我的问题是,每次他们必须登录时,我都无法检测到 Android 智能手机上的回访用户。

我尝试了匿名用户身份,但它很快就会被弃用。

还有其他方法可以跟踪用户吗?使用userId我可以存储的某种方式,这样我就可以进行“我自己的帐户链接”,将个人/智能手机与现有的用户帐户联系起来。

0 投票
0 回答
232 浏览

dialogflow-es - 与 Keycloak 关联的 Google 助理帐号

我正在构建一个 Dialogflow 代理,我正在尝试 在我的网站和 Google 助理之间建立与 OAuth 的帐户链接。我使用 Keycloak 作为我的身份验证服务器。

密钥斗篷配置

密钥斗篷配置

帐号关联 帐号关联

结果

结果

然后在我输入用户名和密码之后 结果

任何想法为什么谷歌助手不启动?有没有办法调试它?

0 投票
0 回答
146 浏览

node.js - 与 Node JS 应用程序链接的 Dialogflow 帐户

我是 Dialogflow 的新手。我想做一个与我的节点 js 应用程序链接的帐户。因此,当我在模拟器中单击登录按钮时,弹出窗口将打开以下请求

使用上述有效负载,一旦使用输入凭据以使用 DB 验证用户,这里如何使用节点 js 中的授权令牌执行重定向到对话流请求的意图。请建议 在此处输入图像描述 单击模拟器中的符号并接受链接后,成功登录后显示登录弹出窗口,希望重定向回模拟器并做出响应。