Dialogflow es Google Assistant帐户链接-使用后端进行身份验证
Dialogflow es Google Assistant帐户链接-使用后端进行身份验证,dialogflow-es,actions-on-google,google-signin,Dialogflow Es,Actions On Google,Google Signin,我是Moodle管理员,我想连接Dialogflow chatbot–Google Assistant–Moodle站点(Moodle站点=后端服务器=mysite)。
当Dialogflow意图通过webhook从Moodle请求私有用户数据时,该意图需要登录,并且必须在服务器上标识用户。我想使用基于OAuth的Google登录链接概念
实施的服务包括:
Dialogflow和Moodle通过webhook连接。
履行–Webhook URL:mysite/client.php。client.
我是Moodle管理员,我想连接Dialogflow chatbot–Google Assistant–Moodle站点(Moodle站点=后端服务器=mysite)。
当Dialogflow意图通过webhook从Moodle请求私有用户数据时,该意图需要登录,并且必须在服务器上标识用户。我想使用基于OAuth的Google登录链接概念
实施的服务包括:
Dialogflow和Moodle通过webhook连接。
履行–Webhook URL:mysite/client.php。client.php文件位于Moodle服务器(后端服务器)上。
intent使用webhook,Moodle以JSON格式发送答案
Google Oauth 2客户端已创建。
URIs:mysite
授权重定向URI
mysite/callback.php(用于php的Google API客户端库-需要登录)
oauth-redirect.googleusercontent.com/r/DialogflowBotID(DialogflowBot需要)
mysite/moodle37/admin/oauth2callback.php(Moodle需要)
Google Oauth 2和Moodle是连接的()。
OAuth2 Google云服务设置在Moodle中,使用户可以使用Google帐户登录Moodle。首先,在聊天之前,用户登录:Google验证用户身份,将用户数据发送到Moodle,Moodle将用户的gmail地址存储在“mdl_auth_oauth2_linked_login”mysql表中。在谷歌术语中:用户的信息存在于后端服务器中
Dialogflow和Google Assistant通过帐户链接(developers.Google.com/Assistant/identity/Google登录oauth)连接。
链接类型:OAuth和Google登录-隐式
授权URL:mysite/login.php
令牌URL:oauth2.googleapis.com/Token
谷歌OAuth客户端
由您的操作向Google帮助大纲发布的客户端ID:169222114038…
客户端密码:RPF…
谷歌发给你的行动帮助大纲的客户ID:16922114038…
范围:个人资料、电子邮件
[x]谷歌通过HTTP基本身份验证头传输clientID和secret
意图调用Google登录窗口,用户登录,重定向URI:oauth-redirect.googleusercontent.com/r/DialogflowBotID
(在您使用聊天之前,我需要将您的聊天帐户链接到谷歌。可以吗?太好了,塔玛斯!您的学习聊天帐户现在链接到谷歌。)
谷歌网站登录-通过后端服务器进行身份验证(developers.Google.com/identity/Sign-In/web/backend-auth)
Google API客户端库(github.com/googleapis/Google API php客户端)安装在Moodle服务器上。
login.php和callback.php文件与client.php文件位于同一目录中。
mysite/login.php调用Google登录窗口(accounts.Google.com/signin/oauth…),并将重定向到mysite/callback.php
callback.php处理OAuth服务器响应以验证令牌,并包含:
用户数据、电子邮件地址(与Moodle中的电子邮件地址相同)
访问令牌:ya29.a0…
刷新令牌=1//09M8-…
id_令牌=EYJHBGCOI…
callback.php从后端服务器数据库中选择用户电子邮件地址,如果(存储的后端电子邮件==收到的令牌电子邮件)为用户建立经过身份验证的会话
callback.php文件将重定向到DialogflowBot:
$redirect_url = 'https://oauth-redirect.googleusercontent.com/r/DialogflowBotID#access_token=' . $access_token . '&token_type=bearer&state=' . $STATE_STRING;
header('Location: ' . filter_var($redirect_url, FILTER_SANITIZE_URL));
操作控制台-在模拟器中测试:在您可以使用学习聊天之前,我需要将您的学习聊天帐户链接到Google。可以吗?对
链接:太好了,塔玛斯!您的学习聊天帐户现在已链接到谷歌
12345服务是分开工作的
我的问题是:
developers.google.com/assistant/identity/oauth-concept-guide说:在用户登录并验证凭据之后,
您的服务创建一个长期访问令牌并将其返回给Google。
如何在后端服务器上创建长期访问令牌
在用户验证之后,如何将callback.php重定向到Dialogflow机器人?
我用了这个:
$redirect\u url='1https://oauth-redirect.googleusercontent.com/r/DialogflowBotID#access_token=' . $访问令牌。”&令牌类型=承载&状态='$状态字符串;
标题('Location:'.filter_var($redirect_url,filter_SANITIZE_url))
这样合适吗
php提供JSON webhook响应,但不包含令牌和状态。
php包含令牌和状态,但不能回答webhook。
如何连接client.php、login.php、callback.php文件
我试图注销该用户并取消该帐户的链接
取消设置($_会话[“自动]);
取消设置($_会话['accesToken']);
$client->revokeToken(accessToken);
$client->revokeToken()
用户如何取消链接链接的帐户?打电话?还是在网站上
长寿命令牌的实现是您的实现。请注意以下几点
对。更多信息,请参阅
不熟悉您的实现。对服务器端的每个请求都将包含访问令牌。所以,这是您的实现
此外,这也是您的实现。但本质上,您需要一种跟踪长寿命代币的方法
长寿命令牌的实现是您的实现。请注意以下几点
对。更多信息,请参阅
不熟悉您的实现。对服务器端的每个请求都将包含访问令牌。所以,这是您的实现
此外,这也是您的实现。但本质上,您需要一种跟踪长寿命代币的方法