[英]Google Assistant Account linking - Authentication with backends
我是 Moodle 管理員,我想連接 Dialogflow 聊天機器人 – Google Assistant – Moodle 站點(Moodle 站點 = 后端服務器 = mysite)。 當 Dialogflow 意圖通過 webhook 從 Moodle 請求私人用戶數據時,該意圖需要登錄,並且必須在服務器上識別用戶。 我想使用基於 OAuth 的 Google 登錄鏈接概念。
實施的服務:
Dialogflow 和 Moodle 通過 webhook 連接。 履行 - Webhook URL:mysite/client.php。 client.php 文件位於 Moodle 服務器(后端服務器)上。 意圖使用 webhook,Moodle 以 JSON 格式發送答案。
Google Oauth 2 客戶端已創建。 URIs: mysite Authorized redirect URIs mysite/callback.php (Google APIs Client Library for PHP - Sign In requires) oauth-redirect.googleusercontent.com/r/DialogflowBotID (DialogflowBot requires) mysite/moodle37/admin/oauth2callback.php (Moodle requires )
Google Oauth 2 和 Moodle 已連接( https://docs.moodle.org/39/en/OAuth_2_Google_service )。 在 Moodle 中設置了 OAuth2 Google Cloud 服務,使用戶能夠使用 Google 帳戶登錄 Moodle。 首先,在聊天之前,用戶登錄:Google 對用戶進行身份驗證,將用戶數據發送到 Moodle,Moodle 將用戶的 gmail 地址存儲在 'mdl_auth_oauth2_linked_login' mysql 表中。 在谷歌術語中:用戶的信息存在於后端服務器中。
Dialogflow 和 Google 助理通過帳戶鏈接 (developers.google.com/assistant/identity/google-sign-in-oauth) 連接。 Linking type: OAuth & Google Sign In – Implicit Authorization URL: mysite/login.php Token URL: oauth2.googleapis.com/token Google OAuth Client Client ID issued by your Actions to Google help outline: 169222114038 … Client secret: RPF … Client Google 向您的操作幫助大綱頒發的 ID:169222114038 ... 范圍:配置文件、email [x] Google 將通過 HTTP 基本身份驗證 Z099FB995346F33E7430
Intent 調用 Google 登錄 window,用戶登錄,重定向 URI:oauth-redirect.googleusercontent.com/r/DialogflowBotID(在您可以使用聊天之前,我需要將您的聊天帳戶鏈接到 Google。可以嗎?太好了,Tamás。您的學習聊天帳戶現已與 Google 關聯。)
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));
Actions Console – 在模擬器中測試:在您可以使用學習聊天之前,我需要將您的學習聊天帳戶鏈接到 Google。 可以嗎? 是鏈接:太好了,塔馬斯。 您的學習聊天帳戶現已與 Google 相關聯。
1 2 3 4 5 服務分開工作。
我的問題是:
developers.google.com/assistant/identity/oauth-concept-guide 說:用戶登錄並驗證憑據后,您的服務會創建一個長期存在的訪問令牌並將其返回給 Google。 如何在后端服務器上創建長期訪問令牌?
用戶驗證后,如何將 callback.php 重定向到 Dialogflow 機器人? 我用這個:
$redirect_url = 'https://oauth-redirect.googleusercontent.com/r/DialogflowBotID#access_token='。 $access_token。 '&token_type=bearer&state='。 $STATE_STRING; header('位置:'.filter_var($redirect_url, FILTER_SANITIZE_URL));
這合適嗎?
client.php 提供 JSON webhook 響應,但不包含令牌和 state。 callback.php包含token和state,但無法應答webhook。 如何連接client.php、login.php、callback.php文件?
我試圖注銷用戶並取消關聯該帳戶。
未設置($_SESSION["auto"]); 未設置($_SESSION['accesToken']); $client->revokeToken(accessToken); $client->revokeToken();
用戶如何取消關聯的帳戶? 在電話上? 還是在網站上?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.