Google 登入概念指南 (Dialogflow)

適用於 Google 助理的 Google 登入 (GSI) 可提供使用者最流暢的連結體驗,且對於開發人員來說是最簡單的實作流程。使用 GSI 時,您的動作可在對話期間要求存取使用者的 Google 個人資料,如果使用者同意,還會收到使用者的姓名、電子郵件地址和個人資料相片。然後,動作就能根據這項資訊在您的系統中檢查使用者是否擁有 Google 帳戶。如果不是,您的動作會詢問使用者是否要根據其 Google 個人資料,在您的系統中建立新帳戶。

如果符合下列任一情況,建議使用 GSI 帳戶連結解決方案:

  • 您目前沒有驗證系統,且/或預期所有使用者都擁有 Google 帳戶。例如,如果您的動作特別指定 Google 助理,那麼所有使用者都能擁有 Google 帳戶。
  • 您已有驗證系統,且只想要連結使用其 Google 帳戶登入您系統的使用者。

如要確認 GSI 是適合您的解決方案,請參閱「Choose your account link type」(選擇帳戶連結類型) 頁面。

重要詞彙

開始瞭解 GSI 的運作方式前,請先熟悉下列術語:

  • 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 助理要求帳戶連結流程。詳情請參閱「帳戶登入」。
    • 內容字串:您新增至帳戶登入輔助程式意圖的自訂字串,會將字串告知使用者您需要連結帳戶的原因。

運作方式

GSI 的基本流程如下:

  1. 您的動作要求使用者同意存取其 Google 個人資料。
  2. 使用者表示同意後,您的動作會收到 Google ID 權杖,其中包含使用者的 Google 設定檔資訊。
  3. 驗證並解碼權杖,以便讀取設定檔內容。如果您使用 Node.js 適用的 Actions on Google 用戶端程式庫或 Java 用戶端程式庫,系統會為您驗證權杖並進行解碼。
  4. 您的動作會使用此符記檢查使用者的 Google 設定檔資訊是否存在於您的系統中。

    1. 若顯示,則使用者已經使用自己的 Google 帳戶登入您的系統;使用者可以透過與其 Google 帳戶連結的身分繼續與 Google 助理對話。
    2. 如果不存在,使用者可以在您的系統中使用 Google ID 權杖中的資訊建立新帳戶。接著,使用者可以透過已連結帳戶繼續與 Google 助理的對話。

Google 登入流程

本節將說明 Google 登入功能的流程。

流程 1:您的系統中已有使用者資訊

下圖顯示當系統中已有使用者資訊時,GSI 發生的端對端流程:

在這種情況下,您可以使用自訂的內容字串呼叫 actions.intent.SIGN_IN 輔助意圖。此意圖要求使用者授權存取其 Google 個人資料。

使用者同意後,Google 助理會傳送含有 user@gmail.com 設定檔資訊的要求。在此情況下,user@gmail.com 的 Google ID 權杖包含的資訊與系統中的帳戶相符,因此動作中的使用者身分就會自動連結到該帳戶。接著,您的 Webhook 即可從資料庫讀取使用者的一般順序,並據此回應。

流程 2:使用者資訊不存在於您的系統中

下圖顯示 GSI 在系統不存在使用者資訊時發生的端對端流程:

在這種情況下,user@gmail.com 的 Google ID 權杖中的資訊與系統中的帳戶不符,因此 Google 助理詢問使用者是否要建立新帳戶。使用者可以透過語音完成帳戶建立程序,不必傳輸至受螢幕裝置。

使用者同意建立帳戶時,您的服務會使用 ID 權杖中的資訊 (使用者名稱和電子郵件地址) 為使用者建立帳戶。建立帳戶之後,動作中的使用者身分就會連結至新的 Google 帳戶。

在這個情況下,由於使用者是第一次使用服務,因此沒有平常的訂單,因此您的動作會詢問他們想訂購什麼內容。您也可以詢問使用者是否要將最新訂單設為平常的順序。