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()

  • 用户如何取消链接链接的帐户?打电话?还是在网站上

  • 长寿命令牌的实现是您的实现。请注意以下几点

  • 对。更多信息,请参阅

  • 不熟悉您的实现。对服务器端的每个请求都将包含访问令牌。所以,这是您的实现

  • 此外,这也是您的实现。但本质上,您需要一种跟踪长寿命代币的方法

  • 长寿命令牌的实现是您的实现。请注意以下几点

  • 对。更多信息,请参阅

  • 不熟悉您的实现。对服务器端的每个请求都将包含访问令牌。所以,这是您的实现

  • 此外,这也是您的实现。但本质上,您需要一种跟踪长寿命代币的方法