问题标签 [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.
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 的模拟器?
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。它可以是任何随机字符串吗?仍然是
token1
AoG 用语中的有效令牌(就像在 Alexa 中一样)?任何配置错误的 Java 意图处理程序?我们应该对来自 AoG 帐户链接流程的响应中的哪个意图名称做出反应?
是否有一个包罗万象的意图名称,一个可以合并到 Java 应用程序中的处理程序,以促进对上述内容的进一步调试?
“空话响应”是什么意思,我们没有提供哪些预期值并导致损坏?
我们配置了哪些不应该配置的东西?
如果这很重要,这里是来自我们 webhook 的日志:
dialogflow-es - 如何在 Google Assistant 上的帐户链接中替换默认响应
作为为与以下拓扑链接的帐户配置的操作的一部分:
Actions-on-Google->Dialogflow->Webhook ,
我看到 Google 助理在通过帐户链接流程之前注入了自己的消息,如下所示:
"I need to link your <action-name> to Google. Is that ok?"
链接流程由 webhook 中的以下内容触发:
我希望能够用自定义消息替换上述库存消息,但是当使用我们自己的消息将上下文附加到登录卡时,如下所示:
我仍然看到最后附加的默认消息:
如何用我自己的替换Google 默认消息?
dialogflow-es - 如何在 Dialogflow 中获取用户 ID 和 OAuth 访问令牌
在 webhook(用Java编写)中,作为配置为使用以下拓扑链接帐户的操作的一部分:
我正在尝试从传入请求 中提取userId和 OAuth accessToken 。
两个初始请求(在链接流程开始之前):
和后链接一个:
似乎包含该userId
领域。唯一的accessToken
开始出现在链接之后,这是正确的。
但是,在我的 webhook 中,在这两种情况下,我都使用以下内容来捕获userId
and accessToken
(除了其他东西):
在这两种情况下,我都看到它们都返回为null
:
预帐户链接:
发布帐户链接:
通过 Java API,queryText
似乎是唯一一个提取实际值的方法,但对于来自传入请求的其他字段而言并非如此,它们都是null
.
我有一些问题:
Google在什么时候
userId
创建了 get 以及触发了它的创建?换句话说,是否存在userId
请求中的实际是的情况null
,在其值生成之前,我是否能够在进入我的 webhook 的请求中看到这种情况?如何从进入我的 webhook 的请求中提取其他字段?我做错了什么,以至于通过 Java API 解析请求返回的结果与原始请求中看到的值不同?
alexa - Alexa 帐户与第 3 方资源服务器的链接
我正在研究一项技能,我想将该技能链接到第 3 方 api。问题是 3p 服务器没有启用 Oath 并且在用户名/密码身份验证上工作。
我想了解我在这里的选择。我可以创建一个适用于 oath 身份验证的中间件,然后通过用户名/密码调用 api 吗?
任何关于这方面的指示都会很好地帮助我前进。
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 服务器发送帖子
actions-on-google - 在用户提供输入之前,Google 新 SignIn() 上的操作正在取消
我们正在使用 Dialogflow V2 API 在 Google 上创建一个 Action。我们正在使用 firebase 云功能来实现我们的功能,并且我们正在使用外部 rest api 来进行 crud 操作。
我们有一个未部署的动作,我在模拟器中测试过。对话流程是
- 提示用户登录,即
new SignIn()
- 他们被问到他们想做什么,他们回答
- 他们的响应使用他们的凭据保存在我们的后端
new SignIn()
在模拟器中工作,但是当我在 Google Home Mini 上进行测试时,SignIn() 的响应就好像用户在他们有时间响应之前拒绝了登录提示
在 Google Home Mini 上测试包含帐户关联的操作是否有一些限制?
包含的意图new SignIn()
是我的欢迎意图,这会导致问题吗?
这是处理 SignIn() 的两个意图。开始登录意图由欢迎事件触发
node.js - 如何在 Dialogflow 实现中检测返回到 Android 上的 Google 助理的用户?
我有一个正在运行的网站,用户已经拥有帐户。我正在尝试创建一个可在 Android 上访问的 Google Assistant 代理,以帮助用户访问他们的信息。
我的问题是,每次他们必须登录时,我都无法检测到 Android 智能手机上的回访用户。
我尝试了匿名用户身份,但它很快就会被弃用。
还有其他方法可以跟踪用户吗?使用userId
我可以存储的某种方式,这样我就可以进行“我自己的帐户链接”,将个人/智能手机与现有的用户帐户联系起来。
dialogflow-es - 与 Keycloak 关联的 Google 助理帐号
我正在构建一个 Dialogflow 代理,我正在尝试 在我的网站和 Google 助理之间建立与 OAuth 的帐户链接。我使用 Keycloak 作为我的身份验证服务器。
密钥斗篷配置
帐号关联
结果
然后在我输入用户名和密码之后
任何想法为什么谷歌助手不启动?有没有办法调试它?