登录意图目前无效,如文档中清楚解释的那样,它只是您可以在模拟器中用于测试的内容,但它在生产中无法使用。
我的情况是我正在使用帐户关联,我的令牌在一天后过期,因此如果用户未与助理互动,则令牌将不再有效。然后,如果在webhook上证明该令牌无效,我想发回“请再次将您的帐户关联”给webhook的助手。
有一个方法app.askForSignIn();
看起来与我需要的方法相似,但看起来它不适用于Dialogflow,只适用于SDK。
所以我所做的是:
actions.intent.SIGN_IN
并在其中添加actions_intent_SIGN_IN
事件的意图app.askForSignIn();
发生了什么:
更新:
我尝试使用doc(https://developers.google.com/actions/reference/nodejs/AssistantApp#askForSignIn)中的代码段
并且它不能正常工作,这是我从webhook调用app.askForSignIn();
时来自模拟器的响应
答案 0 :(得分:0)
您可以有2个令牌,一个是访问令牌,它是短期的,另一个是刷新令牌,它是长期的。
因此,当Google需要调用您的服务的API之一时,Google会一起使用这些端点来获得用户的许可,以代表他们调用这些API。由Google启动的典型OAuth 2.0会话具有以下流程:
首先,Google在用户的浏览器中打开您的授权端点。如果尚未登录,则用户登录,如果尚未授予权限,则授予Google权限以使用您的API来访问其数据。
然后,您的服务将创建授权码,并通过将用户的浏览器重定向到Google并附带请求中的授权码来将其返回给Google。
接下来,Google将授权代码发送到您的令牌交换端点,该端点将验证代码的真实性并返回访问令牌和刷新令牌。访问令牌是您的服务接受作为访问API的凭据的短暂令牌。刷新令牌是一种长期存在的令牌,Google可以存储该令牌,并在令牌过期后用于获取新的访问令牌。
最后,Google调用您服务的API,并在每个请求中附加访问令牌。您的服务将验证访问令牌是否已授予Google授权以访问API,然后完成API调用。