强制用户重新加入他/她的帐户

时间:2017-11-20 14:03:14

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

非常简单的用例解释我的问题:鉴于我的应用程序要求针对某些交互。现在,用户给了我三次错误的针脚。然后,我想重置他的访问权限并强迫他重新链接他的帐户。我可以在我的内部数据库中很容易地做到这一点,但我需要一种方法告诉谷歌他目前使用的令牌不再有效。此外,Google智能助理拒绝向我发送现已被拒绝的令牌。

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

原帖

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

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

enter image description here

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

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

(我还试图省略几个可能不需要的参数,例如contextOut属性。这会产生与the one stated in the official sdk sources不同的请求,但也不会给出所需的结果。)

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

可悲的是,Dialogflow似乎没有使用状态 401 错误响应重置令牌。

Google公开了一个用于撤销访问和刷新令牌的API 为此,您必须发送以下请求
style={{borderRadius: 10, borderWidth: 1, borderColor: '#bdc3c7', overflow; 'hidden'}}

See the different implementations

编辑:您似乎只需要让Dialogflow重置其状态。只需继续在Dialogflow控制台上创建一个版本,似乎就是清理访问令牌。