OAuth 和 Google 登入概念指南 (Dialogflow)

OAuth 與 Google 登入連結類型除了加上 Google 登入機制之外 以 OAuth 為基礎的帳戶連結。如果您在動作中使用這個連結類型, 這個流程是從 Google 登入開始,可讓您檢查使用者的 Google 設定檔資訊存在於您的系統中。如果沒有,為標準 OAuth 流程 。結合這兩種連結類型,讓使用者能夠 要求他們在動作中使用 Google 或非 Google 帳戶。如果 也可以透過自己的 Google 個人資料建立新帳戶 可能不準確或不適當

我們建議使用 OAuth 和 Google 登入的帳戶連結解決方案 (如有) 下列規則:

  • 您的動作橫跨多個平台 (例如, 動作適用於 Android 應用程式)。
  • 您已經有驗證系統,且想允許使用者 連結自己的身分與非 Google 帳戶。舉例來說 例如您推出的會員方案,希望確保使用者不會失去 現有帳戶累積的積分。

如要驗證 OAuth 和 Google 登入是否是適合您的解決方案,請參閱 選擇帳戶連結類型頁面。

重要詞彙

請先熟悉 OAuth 和 Google 登入的運作方式,再開始閱讀。 包含下列字詞:

  • Google ID 權杖:經簽署的使用者身分宣告,當中包含 使用者的基本 Google 個人資料資訊 (包括姓名、電子郵件地址和 個人資料相片) 即可。Google ID 權杖 JSON Web Token (JWT)。以下是已解碼的權杖範例:
{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The token's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
  "iat": 233366400,         // Unix timestamp of the token's creation time
  "exp": 233370000,         // Unix timestamp of the token's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}
  • 帳戶登入協助程式意圖:您所呼叫的輔助意圖 Google 助理提供的帳戶連結流程若需更多資訊,請參閲 登入帳戶
    • 內容字串:您加進帳戶的自訂字串 登入輔助意圖,向使用者說明您想連結的原因 他們的帳戶。
  • 授權碼流程:可透過 使用 OAuth 2.0 流程執行。 OAuth + Google 登入。此流程需要兩個端點:
    • 授權端點:顯示登入 UI 的端點 吸引尚未登入的使用者記錄同意以下事項: 以短期授權碼形式要求存取權。
    • 權杖交換端點:這個端點負責兩種類型 廣告交易平台:
      1. 交換長期更新權杖的授權碼 和短期存取權杖這種交換機制是 完成帳戶連結流程
      2. 交換可長期存取的長期更新權杖 產生下一個符記當 Google 需要新的存取權杖時,就會發生這個交換作業 因為通知已過期
  • 隱式程式碼流程:可透過 使用 OAuth 2.0 流程執行。 OAuth + Google 登入。這個流程只需要授權端點。 在這個流程中,Google 會在使用者的 。如果登入成功,系統就會將長期存取權杖傳回給 Google。這個存取權杖現已包含在每個透過 用 Google 助理搭配你的動作。
  • 存取權杖:這種權杖可用來授權服務存取 使用者資料。存取權杖與每位使用者相關聯。
  • 更新權杖:一旦發生新存取權杖,便會用來交換新存取權杖的權杖 短期存取權杖已過期。

必要條件

如要使用 OAuth 和 Google 登入連結類型,您需要下列項目:

  • OAuth 2 伺服器
  • 權杖交換端點

    您必須擴充權杖交換端點,才能新增 Google 的 自動連結及從 ID 權杖建立帳戶的通訊協定 (也就是將 intent=getintent=create 參數加入至 這個端點)。

運作方式

本節說明 OAuth 和 Google 登入的一般流程。 下一節「OAuth 和 GSI 流程」會說明 A) 決定啟用或停用各種流程 透過語音建立帳戶,以及 b) 使用隱含或 授權碼流程

基本流程如下:

  1. 您的動作要求使用者同意存取其 Google 個人資料。
  2. 使用者提供同意聲明後,您的動作會收到 Google ID 權杖。 包含使用者的 Google 個人資料資訊。
  3. 您必須驗證權杖並解碼,才能讀取設定檔內容。
  4. 你的動作會使用這個權杖檢查使用者的 Google 個人資料 才是有效的資訊
    1. 如果有,表示使用者已使用 Google 帳戶,Google 助理會將使用者身分與其識別資訊連結 Google 帳戶。使用者可以繼續與 已連結 Google 助理。
    2. 如果沒有,請參閱步驟 5。
  5. 使用者可以選擇 a) 使用 Google 個人資料建立新帳戶 資訊或 b) 使用其他帳戶登入系統。 系統會根據你啟用還是 停用透過語音建立帳戶的功能。如果使用者選擇登入 系統登入不同帳戶,將啟動標準 OAuth 流程。
  6. 使用者建立新帳戶或透過其他供應商登入後, 您的服務會將存取權杖傳回 Google。(如果您使用的是 授權碼流程,您的服務也會傳回更新權杖)。
  7. 使用者現在可以繼續和 Google 助理對話,包括 帳戶。

OAuth 和 GSI 流程

本節將說明 OAuth 和 GSI 可能發生的各種流程。 下圖呈現使用授權碼流程的各個流程 而非「隱含」程式碼流程,並且假設您使用 Dialogflow 為您的動作提供自然語言理解解決方案

每個流程都會在使用者叫用動作後包含以下常見步驟:

在上述流程中,您可以使用actions.intent.SIGN_IN 您自訂的內容字串這項意圖會要求使用者授予權限 自己的 Google 個人資料。使用者同意後,Google 助理會 包含 user@gmail.com 設定檔資訊的要求。

此時間點之後的流程會因您是否設定帳戶而異 以及使用者資訊是否已存在 有些人會將 Cloud Storage 視為檔案系統 但實際上不是以下各節將逐一說明這些流程。

啟用語音帳戶的流程

本節將詳細說明啟用 Google Ads 政策後可能發生的帳戶連結流程 透過語音建立帳戶

流程 1:使用者資訊存在於系統中

在這個情況下,user@gmail.com 代表的使用者就存在於您的後端。 ,因此權杖交換端點會針對使用者傳回權杖。使用者的 動作中的身分現已連結至對方的 Google 帳戶。使用者的 原始要求 (「Order my general」) 符合自訂意圖 order_drink. 接著,Webhook 會處理相符意圖的執行要求,並查詢 「user@gmail.com」一般訂單使用者可以繼續 和「Google 助理」對話

流程 2:使用者資訊不存在,且使用者建立帳戶

因為您允許透過語音建立帳戶,user@gmail.com 並未 你的後端存在,Google 助理會詢問使用者是否要這麼做 下列任一項:

a) 使用對方的 Google 個人資料建立新帳戶。 模型是透過語音來完成

b) 使用其他帳戶登入系統

在這種情況下,使用者選擇透過語音建立新帳戶。Google 通話 服務的權杖交換端點,並要求建立帳戶。 這項要求含有 Google ID 權杖,其中包含所需的元件 建立新的帳戶。接著您可以使用這個權杖中的資訊 (使用者名稱和電子郵件地址) 為使用者建立帳戶。

帳戶建立後,您的服務會傳回存取權杖並重新整理 做為新建帳戶的權杖使用者在動作中的身分現已生效 與 Google 帳戶連結。使用者的原始要求 (「照常訂購」) 符合自訂意圖 order_drink. 接著 Webhook 會處理 對相符意圖的執行要求,並向資料庫查詢 user@gmail.com 的一般訂單,因為使用者是新使用者,所以尚不存在。 然後透過該動作詢問使用者想點什麼。

流程 3:使用者資訊不存在,且使用者以不同的帳戶登入

您透過語音啟用帳戶建立功能,因此 Google 助理會詢問使用者 他們想要執行下列其中一項操作:

a) 使用對方的 Google 個人資料建立新帳戶。 模型是透過語音來完成

b) 使用其他帳戶登入系統

此時,使用者選擇用其他帳戶登入 啟動標準 OAuth 流程如果是在語音裝置上啟動流程 Google 會將執行作業轉移到手機中。Google,然後開啟 使用者瀏覽器中的授權端點,以及 使用者可以選擇是否登入) 未使用 Google 登入的現有帳戶;或是 b) 建立新帳戶 使用不同的供應商如要進一步瞭解 OAuth 流程,請參閱 OAuth 概念指南

驗證使用者的憑證後,您的服務會傳回存取權杖 並向 Google 發出更新權杖已在動作中連結使用者身分 已新增至非 Google 帳戶使用者的原始要求 (「正常訂購」) 與 自訂意圖 order_drink. 接著您的 Webhook 會處理 相符的意圖,並向資料庫查詢 user@gmail.com 的一般順序 因為使用者是新使用者,所以目前並不存在您的動作隨後可以詢問 使用者想訂購的商品,或請他們設定平常的訂單。

已停用建立語音帳戶的流程

本節將詳細說明停用後可能發生的帳戶連結流程 透過語音建立帳戶

流程 4:使用者資訊不存在

您並未透過語音建立帳戶,而且該使用者不在您的 後端,因此標準 OAuth 流程就會開始。Google 助理會開啟您的 使用者瀏覽器中的授權端點 (如果流程是透過語音啟動 Google 會將執行作業傳輸至有螢幕的裝置)。使用者可以 選擇其中一個) 登入其他供應商 (如果對方已註冊 使用您的服務,或是 b) 建立新帳戶,並 選擇的服務供應商如要進一步瞭解 OAuth 流程,請參閱 OAuth 概念指南

驗證使用者的憑證後,您的服務會傳回存取權杖 並向 Google 發出更新權杖已在動作中連結使用者身分 已新增至非 Google 帳戶使用者的原始要求 (「正常訂購」) 與 自訂意圖 order_drink. 接著您的 Webhook 會處理 相符的意圖,並向資料庫查詢 user@gmail.com 的一般順序 因為使用者是新使用者,所以目前並不存在您的動作隨後可以詢問 設定自己常用的訂單。