導入「使用 Google 帳戶登入」的最佳做法

使用 Google 帳戶登入

簡介

使用者可以透過「使用 Google 帳戶登入」功能,快速安全地登入您的應用程式或網站。正確導入這項功能不僅能簡化使用者註冊程序,還能提升應用程式的安全性。本文概述在網頁、Android 和 iOS 平台整合「使用 Google 帳戶登入」的最佳做法。本文件僅著重於驗證作業。授權不在本文的討論範圍內。

整合里程碑檢查清單

這份檢查清單提供高階藍圖,引導您完成「使用 Google 帳戶登入」整合程序。這份指南分為幾個主要階段,從初始設定到正式推出都有涵蓋。你可以使用這份清單追蹤進度,並點選連結前往各里程碑的詳細指南。

第 0 階段:開始使用 (選用)

透過實用的逐步開發人員程式碼研究室,迅速展開整合作業。

網頁:完成「一鍵登入」和「使用 Google 帳戶登入按鈕」Codelab,建構基本的網頁整合功能。

Android:完成 Android 程式碼研究室,瞭解 Android 認證管理工具的基本知識。

iOS:完成 iOS Codelab,瞭解 iOS SDK 的簡介。

階段 1:Google Cloud 專案和品牌設定

確保專案從一開始就設定妥當,能獲得出色成效。

為不同環境品牌建構 Google Cloud 專案。

填寫OAuth 同意畫面設定,提供所有必要的品牌和支援資訊。

為每個平台 (網頁、Android、iOS) 建立正確的 OAuth 用戶端 ID 類型

第 2 階段:核心開發:前端和後端

建構安全無虞的伺服器邏輯,以及平台專屬的使用者體驗。

在前端開發中:

參閱並套用一般使用者體驗 (UX) 最佳做法,盡可能提高使用者採用率和信任度。

網站:使用官方 JavaScript 程式庫,整合「按鈕」和「一鍵登入」流程。

Android:使用官方 Android SDK 進行整合。

iOS:使用官方 iOS SDK 整合。

在後端開發中:

實作安全後端驗證 Google ID 權杖

在系統中,使用 sub 聲明做為使用者的專屬永久 ID。

規劃驗證和授權範圍的分離 (如適用)。

第 3 階段:強化安全性及推出正式版

確保整合功能安全無虞、符合規定,且可投入實際工作環境。

審查並導入安全性最佳做法

啟動前,請先完成 OAuth 應用程式驗證程序。

確保應用程式在使用者刪除帳戶時,能正確處理權杖撤銷

一般最佳做法 (所有平台)

無論您要開發哪個平台的應用程式,都適用這些做法。開發人員也應詳閱一般 OAuth 2.0 政策,確保完全遵守規定。

本節將說明 Google Cloud 專案的架構最佳做法,以及如何設定 OAuth 用戶端,確保安全和品牌法規遵循。

  • 測試和正式環境使用不同的專案

    由於部分 Google 政策僅適用於正式版應用程式,您必須在 Google Cloud 控制台中,為不同的部署環境 (例如開發、測試和正式版) 建立個別專案。詳情請參閱這個頁面

  • 為每個品牌或網域使用不同的專案

    如果貴機構管理多個不同品牌的應用程式,每個品牌都應有專屬的 Google Cloud 專案。同意畫面上向使用者顯示的資訊 (例如應用程式名稱、標誌、支援電子郵件地址,以及服務條款和隱私權政策的連結) 是在專案層級設定。也就是說,在單一專案中建立的所有 OAuth 用戶端 ID 都會共用相同的品牌。為每個品牌建立專屬專案,可確保使用者看到所用應用程式的正確品牌和法律資訊。

  • 提供一般支援電子郵件地址

    使用者支援電子郵件地址會公開顯示在 OAuth 同意畫面上。為維持專業形象並確保服務不中斷,請務必設定一般支援電子郵件地址 (例如 Google Cloud 專案的 OAuth 同意畫面設定中,請使用 support@yourdomain.com,而非個別員工的電子郵件地址。詳情請參閱這個頁面

  • 每個平台都有專屬的 OAuth 用戶端

    您應為應用程式執行的每個平台 (例如網頁、Android、iOS),全都位於同一個 Google Cloud 專案中。為各平台使用正確的用戶端類型至關重要,主要有兩個原因:

    • 強化安全性:每種用戶端類型都會啟用平台專屬的安全防護功能。舉例來說,Android 用戶端可以透過套件名稱和簽署憑證鎖定,防止未經授權使用您的用戶端 ID。
    • 正常運作:確保應用程式正確整合平台專屬的 SDK 和功能,例如 Android 的憑證管理工具,或是 iOS 的「使用 Google 帳戶登入」SDK。

    這種結構也能簡化使用者體驗。由於同意聲明是在 Google Cloud 專案層級處理,使用者只需要一次授權應用程式存取所有平台。詳情請參閱官方 OAuth 2.0 政策

  • 完成 OAuth 應用程式驗證

    如要讓正式版應用程式顯示名稱和標誌,必須先通過驗證。驗證類型取決於您向使用者索取的資料。

    • 使用 Google 帳戶登入只會要求驗證範圍 (emailprofileopenid),因此適用較簡單的品牌驗證。這個程序通常較快,主要目的是確認品牌身分

    為協助您規劃發布時間表,Google 提供詳細資料,說明不同驗證類型和預計審查時間。如要進一步瞭解驗證政策,請參閱 OAuth 應用程式驗證說明中心

安全性與權杖處理

本節著重於開發人員必須在後端伺服器上導入的執行階段需求和安全措施。

  • 將 Google ID 權杖與後端整合

    • 驗證 ID 權杖:請務必在後端伺服器上驗證 Google ID 權杖的完整性。請勿僅因權杖是從用戶端傳送而信任該權杖。建議您使用 Google API 用戶端程式庫進行這項驗證。詳情請參閱「在伺服器端驗證 Google ID 憑證」。
    • 使用 sub 聲明:請只使用 Google ID 權杖 sub 欄位做為使用者 ID,因為這個欄位在所有 Google 帳戶中都是專屬且穩定,且絕不會重複使用。您應儲存 sub 欄位,並在帳戶管理系統中與使用者建立關聯。雖然您可以使用 ID 權杖中的電子郵件地址,檢查使用者是否已有帳戶,但請勿將電子郵件地址做為 ID,因為 Google 帳戶在不同時間點可能有多個電子郵件地址。
  • 在刪除帳戶時撤銷權杖

    強烈建議為透過 Google 登入的使用者提供將 Google 帳戶與應用程式取消連結的功能。如果使用者選擇刪除帳戶,您必須撤銷應用程式取得的所有存取權和重新整理權杖。

    如要瞭解用戶端權杖撤銷作業的詳細資訊,請參閱網頁AndroidiOS 說明文件。如要從伺服器端撤銷存取權,請參閱「使用 OAuth 2.0 處理網路伺服器應用程式」。

  • 將驗證與授權分開

    Google 登入 SDK 只會要求驗證所需的範圍。如果應用程式需要存取其他 Google 服務 (例如 Google 日曆或雲端硬碟),您應分別要求這些權限,且僅限使用者嘗試執行需要這些權限的操作時。詳情請參閱「驗證和授權階段分開處理」。

  • 安全性最佳做法

    為確保整合安全無虞,請務必使用 Google API 用戶端程式庫,在後端伺服器上驗證 ID 權杖。如要更全面防範各種威脅,請導入安全防護套裝組合跨帳戶防護功能 (RISC)。此外,強烈建議您為 iOS 應用程式整合 App Check,確保要求來自正版應用程式。

使用者體驗 (UX)

本節著重於最佳化使用者面向的元素,以及登入/註冊流程。

  • 醒目顯示按鈕:「使用 Google 帳戶登入」按鈕應清楚顯示在登入和註冊頁面,方便使用者存取。

  • 遵循品牌規範:使用 Google 官方品牌的登入按鈕,確保使用者享有連貫一致且值得信賴的體驗。詳閱官方的「使用 Google 帳戶登入品牌宣傳指南」。

  • 順暢的註冊體驗:對於新使用者,系統會在他們首次成功完成「使用 Google 帳戶登入」流程時,自動建立帳戶或引導他們完成新帳戶建立流程。在後端,檢查是否有指定 sub ID 的使用者,如果沒有,請建立新帳戶。盡量減少註冊作業。

  • 簡化登入程序:對於回訪使用者,請使用 sub ID 識別使用者,並驗證他們是否登入現有帳戶。導入網頁Android 的自動登入等功能,讓使用者快速安全地返回應用程式。

  • 管理社群媒體登入方式:在使用者設定中提供集中管理的「已連結帳戶」部分,使用者可以在這裡管理各種社群媒體登入方式 (例如 Google)。

    • 連結:為使用其他方法 (例如使用者名稱和密碼) 的現有使用者提供「使用 Google 帳戶登入」按鈕。按一下這個按鈕會啟動驗證流程,將 Google 帳戶連結至現有設定檔。

    • 取消連結:提供取消連結帳戶的選項。如要完成這項操作,請撤銷權杖,並從資料庫中移除 Google 關聯。

Android 實作 (應用程式和遊戲)

標準 Android 應用程式

如果是 Android 實作,請使用 Credential Manager。 建議您採用這項方法處理使用者憑證,在 Android 上提供統一、安全且一致的登入體驗。

請使用 Android 的 OAuth 用戶端 ID 進行實作。如果您已在其他平台 (例如網頁、iOS) 實作「使用 Google 帳戶登入」功能,請在相同的 Google Cloud 專案中,建立新的 Android 類型 OAuth 用戶端 ID。

導入流程

完善的實作方式應包含 Credential Manager 的底部功能表 UI 和「使用 Google 帳戶登入」按鈕。

  • 底部功能表:這是開發人員主導的低摩擦提示,當使用者進入登入畫面時,Credential Manager 會顯示這項提示。
  • 「使用 Google 帳戶登入」按鈕:這是使用者可輕觸啟動的明確登入流程。
  • 請務必正確設定 Google Cloud 專案。這包括建立正確類型的 OAuth 用戶端 ID,以及提供特定詳細資料,例如應用程式的SHA-1憑證指紋。為確保設定正確無誤,請嚴格按照官方 Android 開發人員指南操作。

您應一律加入按鈕流程,因為使用者可能會關閉底部功能表,或是在偏好設定中停用底部功能表。按鈕可確保使用者隨時都能啟動登入程序。

刊登位置策略

  • 「使用 Google 帳戶登入」按鈕:

    • 位置:在專屬的註冊或登入頁面上,顯示「使用 Google 帳戶登入」按鈕
    • 顯示位置:將 Google 登入按鈕與其他登入方式並列,例如使用者名稱和密碼欄位,或是其他社群登入服務供應商。
  • Credential Manager Bottomsheet:

    • 觸發條件:登入頁面啟動或應用程式啟動時,系統應會自動叫用底部功能表。不應由使用者輕觸按鈕觸發。
    • 自動登入:對於回訪使用者,強烈建議在 Credential Manager 中啟用自動登入選項。這樣一來,回訪使用者 (先前已同意) 就能在不進行任何互動的情況下,重新登入您的應用程式。

Android 遊戲

對於 Android 遊戲,不建議使用憑證管理工具。 遊戲開發人員應改用 Google Play 遊戲服務 (PGS) 方法,著重於使用「使用 Google 帳戶登入」功能,跨平台整合 Google 身分。詳情請參閱使用「使用 Google 帳戶登入」功能,在跨平台環境中驗證 Google 身分說明文件。

iOS 導入作業

使用官方的「使用 Google 帳戶登入」SDK

如果是 iOS 應用程式,請使用官方的 Sign in with Google for iOS and macOS SDK。這個程式庫提供最安全且簡單易用的方式,整合「使用 Google 帳戶登入」功能。

使用 iOS 的 OAuth 用戶端 ID 進行實作。如果您已在其他平台 (例如網頁、Android) 導入「使用 Google 帳戶登入」功能,請在相同的 Google Cloud 專案中,建立新的 OAuth 用戶端 ID iOS 類型。

新增「使用 Google 帳戶登入」按鈕

  • 位置:在應用程式的登入檢視畫面中,於註冊和登入頁面新增「使用 Google 帳戶登入」按鈕。請將 Google 登入按鈕放在顯眼位置,並與其他登入方式並列,例如使用者名稱和密碼欄位,或是其他社群登入服務供應商。
  • 使用建議的元件:針對 SwiftUI 和 UIKit,使用 SDK 提供的官方按鈕元件。這些元件會自動產生符合 Google 品牌宣傳指南的按鈕,建議您使用這種方式顯示按鈕。

使用 App Check 提升安全性

驗證傳送至 OAuth 2.0 用戶端的要求是否來自正版應用程式,防止後端資源遭到濫用。App Check 會使用認證供應商,驗證要求是否來自正版且未經竄改的應用程式例項,並拒絕不符合條件的要求。詳情請參閱「iOS 上的 Google 登入服務適用的應用程式檢查」。

網站導入作業

網站和網頁應用程式的相關注意事項。

使用官方的「使用 Google 帳戶登入」JavaScript 程式庫

如果是網頁實作,請使用官方的「使用 Google 帳戶登入」JavaScript 程式庫。這是最新一代的 Google 網路身分識別程式庫,包含「按鈕」和「一鍵登入」功能。

請使用「網頁」的 OAuth 用戶端 ID 進行實作。如果您已在其他平台 (例如 Android、iOS) 導入「使用 Google 帳戶登入」功能,請在相同的 Google Cloud 專案中,建立新的 OAuth 用戶端 ID 網頁類型。

實作「按鈕」和「一鍵登入」流程

建議同時導入「使用 Google 帳戶登入」按鈕和 One Tap 登入體驗。

  • 「使用 Google 帳戶登入」按鈕:這是由使用者明確發起的登入/註冊流程。
  • One Tap:提供順暢的登入或註冊提示,減少中斷。
  • 兩種實作方式都使用相同的 Web OAuth 用戶端 ID。

一律應將按鈕設為主要登入選項。使用者可以在 Google 帳戶設定中關閉或停用「一鍵登入」,但「一鍵登入」按鈕一律會顯示,確保使用者不會無法登入。

刊登位置策略

  • 「使用 Google 帳戶登入」按鈕:

    • 位置:在專屬註冊或登入頁面顯示個人化的「使用 Google 帳戶登入」按鈕
      • 請注意,沒有任何單一模式最適合所有網站 (例如重新導向彈出式視窗)。網頁設計或使用者體驗團隊應測試並最佳化這些流程,盡量提高註冊和登入的完成率。
    • 顯示位置:將 Google 登入按鈕與其他登入方式並列,例如使用者名稱和密碼欄位,或是其他社群登入服務供應商。
    • 檢查:請參閱「使用 Google 帳戶登入」按鈕注意事項一節,瞭解如何進行最佳設定並提升成效。
  • One Tap 提示:

    • 位置:在網站的多個網頁上顯示「一鍵登入」提示,例如個別產品網頁、文章網頁,甚至是首頁。「One Tap」的主要優點是讓使用者登入或建立帳戶時,不必離開目前頁面。
    • 自動登入:對於回訪使用者,強烈建議在「一鍵登入」中啟用自動登入選項。 這樣一來,回訪使用者 (先前已同意) 就能重新登入應用程式,不必進行任何操作。
    • 檢查單一輕觸注意事項部分,瞭解最佳設定和成效。