Javascript app.askForSignIn();根本不工作
正如文档中明确解释的那样,登录意图目前不起作用,它只是可以在模拟器中用于测试的东西,但在生产环境中不可用 我的情况是,我正在使用帐户链接,我的令牌在一天后过期,因此如果用户不与助手交互,令牌将不再有效。然后,如果令牌在webhook上被证明无效,我想从webhook向助手发回“请再次链接您的帐户” 有一个方法Javascript app.askForSignIn();根本不工作,javascript,actions-on-google,google-assistant-sdk,api-ai,dialogflow-es,Javascript,Actions On Google,Google Assistant Sdk,Api Ai,Dialogflow Es,正如文档中明确解释的那样,登录意图目前不起作用,它只是可以在模拟器中用于测试的东西,但在生产环境中不可用 我的情况是,我正在使用帐户链接,我的令牌在一天后过期,因此如果用户不与助手交互,令牌将不再有效。然后,如果令牌在webhook上被证明无效,我想从webhook向助手发回“请再次链接您的帐户” 有一个方法app.askForSignIn()这似乎与我需要的类似,但它似乎不适用于Dialogflow,而仅适用于SDK 因此,我所做的是: 在Dialogflow中创建一个名为actions.i
app.askForSignIn()
这似乎与我需要的类似,但它似乎不适用于Dialogflow,而仅适用于SDK
因此,我所做的是:
- 在Dialogflow中创建一个名为
的意图,并向其添加actions.intent.SIGN\u in
事件actions\u intent\u SIGN\u in
- 当任何请求到达webhook时,我会检查令牌,如果遇到无效令牌,我会调用
app.askForSignIn()代码>
- 应用程序刚刚离开对话例如:测试应用程序离开了对话
- 当我再次说“与测试应用程序对话”时,它的行为就像帐户被链接一样,并且在我使用测试控制台的重置按钮手动重置整个应用程序之前,不会请求帐户链接
您可以有两个令牌,一个是短期访问令牌,另一个是长期刷新令牌 因此,当Google需要调用您的服务的API时,Google会将这些端点一起使用,以获得您的用户代表他们调用这些API的权限。由Google发起的典型OAuth 2.0会话具有以下流程: 首先,Google在用户浏览器中打开您的授权端点。如果用户尚未登录,则登录;如果用户尚未授予权限,则授予Google使用API访问其数据的权限 然后,您的服务创建一个授权码,并通过将用户的浏览器重定向回Google并将授权码附加到请求中,将其返回给Google 接下来,Google将授权代码发送到您的令牌交换端点,该端点验证代码的真实性,并返回访问令牌和刷新令牌。访问令牌是一个短期令牌,您的服务接受它作为访问API的凭据。刷新令牌是一种长寿命令牌,谷歌可以存储该令牌,并在其到期时使用它来获取新的访问令牌
最后,Google调用您服务的API,在每个请求中附加访问令牌。您的服务验证访问令牌是否授予Google访问API的权限,然后完成API调用。我被您的问题弄糊涂了。一切正常,但代币在一天后过期?是的,代币在1小时后过期。例如:我从助手应用程序开始,说“与测试应用程序对话”,它要求帐户链接,然后我输入密码并进入,让我命令
ok google问我的测试应用程序显示出席情况
,它返回时带有4个出现在
之外,一小时内一切正常,但在一小时令牌到期后,当我说ok时,谷歌要求我的测试应用程序向我显示出勤情况
失败,助手不明白我不再经过身份验证,然后继续使用相同的标记,结果是永远不要取消与帐户的链接在您的问题中,听起来好像您正在尝试使用askForSignIn()解决问题。。。为什么呢?askForSignIn()将在从DialogFlow调用的web钩子中工作。