Google 登入概念指南

適用於 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"
}
  • user.verificationStatus系統設定的屬性,指出目前的工作階段是否有已驗證的使用者。

  • user.accountLinkingStatus系統設定的屬性,表示目前工作階段中的使用者是否有已連結的身分。

  • 帳戶連結系統情境:這個預先定義的情境會導入帳戶連結確認流程,可配合特定用途進行自訂。

運作方式

GSI 的基本流程如下:

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

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

Google 登入流程

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

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

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

在這種情況下,您將轉換至帳戶連結系統場景,並提供自訂的理由。這個場景會要求使用者授予存取 Google 個人資料的權限。

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

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

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

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

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

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