actions-on-google – 强制用户重新链接他/她的帐户

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

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

原帖

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

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

《actions-on-google – 强制用户重新链接他/她的帐户》

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

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

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

最佳答案 遗憾的是,Dialogflow似乎没有使用状态401错误响应重置令牌.

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

See the different implementations

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

点赞