【问题标题】:Force user to relink his/her account强制用户重新关联他/她的帐户
【发布时间】:2017-11-20 14:03:13
【问题描述】:

非常简单的用例解释了我的问题:假设我的应用要求输入密码以进行某些交互。现在用户给了我三遍错误的密码。然后,我想重置他的访问权限并强制他重新链接他的帐户。我可以在我的内部数据库中很容易地做到这一点,但我需要一种方法来告诉谷歌他当前使用的令牌不再有效。否则,Google 助理拒绝向我发送现在被拒绝的令牌。

2018-03-01 更新:使用新的内置意图/事件,我还尝试通过 followupEvent 属性发送 actions_intent_SIGN_IN 事件,但这只会导致谷歌助手使用 GOOGLE_ASSISTANT_WELCOME(使用旧的 oauth 令牌..)调用我的 api,而不是重新启动登录工作流。


原帖

我有一个带有对话框流的谷歌助手应用程序,它强制用户登录才能使用我的应用程序。最初的 oauth 工作流程有效,我确实在所有 api 调用中都获得了令牌。

现在我想强制用户在某些情况下重新运行帐户关联工作流程。为此,我从内部数据库中删除了 oauth 令牌,并将此响应准确发送给用户,如果您使用的是 sdk,这应该等于 app.askForSignIn() 调用:https://github.com/actions-on-google/actions-on-google-nodejs/blob/fe29016d472eeb1d080e2b575236076e9341199e/test/dialogflow-app-test.js#L1827

但这不起作用。助手不会告诉用户重新运行 oauth 链接工作流,也不会删除它存储的 oauth 令牌。它甚至不使用它的刷新令牌来获取新的访问令牌!

此外,模拟器没有使用我的响应的“语音”属性,而是用“抱歉,我没有得到任何响应”来回答。 - 虽然我的模拟器配置为说德语。

(我还尝试省略几个可能不需要的参数,例如contextOut 属性。这会导致与the one stated in the official sdk sources 不同的请求,但也没有给出预期的结果。)

【问题讨论】:

  • 您是否发送了表明您的令牌错误的响应?
  • @NickFelker 那我必须发送什么样的回复?我在文档 (developers.google.com/actions/identity/account-linking) 中没有找到任何关于此的内容。唯一说明的是发送actions.intent.SIGN_IN 以启动帐户链接工作流程,这就是我尝试过的。
  • 您是否发送带有文本“无效代码”或“过期代码”的 400? IE。 github.com/actions-on-google/actionssdk-smart-home-nodejs/blob/…
  • @NickFelker 您正在描述我的 oauth 端点的响应,不是吗?问题是我的 oauth 端点 根本没有重新触发。但是在您回复之后,我还尝试从我的 dialogflow webhook 发送带有“无效代码”的 400 响应——这只导致我的谷歌操作模拟器中出现“验证错误”。所以问题仍然是:我如何告诉谷歌助手获取新的 oauth 令牌/重新启动帐户链接?
  • 这是一个有趣的用例。不幸的是,我不确定答案。

标签: actions-on-google google-home dialogflow-es api-ai


【解决方案1】:

处理同样的问题,如果您希望删除存储的 DF 令牌,建议我发送 401 响应。 DF 没有隐式的撤销令牌意图。

【讨论】:

  • 是的,这似乎工作了! :-) 不过 2017 年 11 月对我们不起作用。
【解决方案2】:

遗憾的是,Dialogflow 似乎没有通过状态 401 错误响应来重置令牌。

Google 公开了一个用于撤销访问和刷新令牌的 API。
为此,您必须发送以下请求
https://accounts.google.com/o/oauth2/revoke?token={token}.

See the different implementations

编辑:看来您只需让 Dialogflow 重置其状态。继续在 Dialogflow 控制台上进行编辑似乎可以清除访问令牌。

【讨论】:

  • 我尝试使用它来撤销我的访问令牌,但我不断收到“invalid_token”响应。我正在提供我的accessToken,在conv json 中可用(通过conv.user.raw.accessToken)。我做错了什么?
猜你喜欢
  • 2012-09-04
  • 2021-12-09
  • 2013-04-04
  • 2011-03-24
  • 2012-11-27
  • 2012-06-24
  • 2011-04-08
  • 2013-02-08
  • 2013-04-27
相关资源
最近更新 更多