本參考頁面說明「使用 Google 帳戶登入」HTML 資料屬性 API,用於在網頁上顯示「使用 Google 帳戶登入」按鈕或 One Tap 提示。
ID 為「g_id_onload」的元素
您可以將「使用 Google 帳戶登入」資料屬性,放在任何可見或不可見的元素中,例如 <div> 和 <span>。唯一的要求是將元素 ID 設為 g_id_onload。請勿將這個 ID 套用至多個元素。
資料屬性
下表列出資料屬性及其說明:
| 屬性 | |
|---|---|
data-client_id |
應用程式的用戶端 ID |
data-color_scheme |
One Tap 提示套用的色彩配置。 |
data-auto_prompt |
顯示 Google One Tap。 |
data-auto_select |
啟用 Google One Tap 的自動選取功能。 |
data-login_uri |
登入端點的網址 |
data-callback |
JavaScript ID 權杖處理常式函式名稱 |
data-native_login_uri |
密碼憑證處理常式端點的網址 |
data-native_callback |
JavaScript 密碼憑證處理常式函式名稱 |
data-native_id_param |
credential.id 值的參數名稱 |
data-native_password_param |
credential.password 值的參數名稱 |
data-cancel_on_tap_outside |
控管使用者點選提示以外的區域時,是否要取消提示。 |
data-prompt_parent_id |
一鍵登入提示容器元素的 DOM ID |
data-skip_prompt_cookie |
如果指定 Cookie 的值並非空白,則略過一鍵登入。 |
data-nonce |
ID 權杖的隨機字串 |
data-essential_claims |
要納入 Google 傳回的 ID 權杖中的其他要求。 |
data-context |
One Tap 提示中的標題和文字 |
data-moment_callback |
提示 UI 狀態通知監聽器的函式名稱 |
data-state_cookie_domain |
如需在上層網域及其子網域中呼叫 One Tap,請將上層網域傳遞至這個屬性,以便使用單一共用 Cookie。 |
data-ux_mode |
「使用 Google 帳戶登入」按鈕使用者體驗流程 |
data-allowed_parent_origin |
允許嵌入中繼 iframe 的來源。如果這個屬性存在,一鍵登入功能就會在中間 iframe 模式下執行。 |
data-intermediate_iframe_close_callback |
覆寫使用者手動關閉一鍵登入時,預設的中繼 iframe 行為。 |
data-itp_support |
在 ITP 瀏覽器上啟用升級版一鍵登入使用者體驗。 |
data-login_hint |
提供使用者提示,略過帳戶選取步驟。 |
data-hd |
依網域限制帳戶選取。 |
data-use_fedcm_for_prompt |
允許瀏覽器控制使用者登入提示,並在網站和 Google 之間協調登入流程。 |
data-use_fedcm_for_button |
這個欄位會決定是否要在 Chrome (電腦版 M125 以上版本和 Android 版 M128 以上版本) 使用 FedCM 按鈕使用者體驗。預設值為 false。 |
data-button_auto_select |
是否為 FedCM 按鈕流程啟用自動選取選項。啟用後,如果回訪者有有效的 Google 工作階段,系統會自動登入,略過帳戶選擇工具提示。預設值為 false。 |
屬性類型
以下各節將詳細說明各個屬性類型,並提供範例。
data-client_id
這個屬性是應用程式的用戶端 ID,可在 Google Cloud 控制台中找到及建立。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 是 | data-client_id="CLIENT_ID.apps.googleusercontent.com" |
data-color_scheme
這個欄位是套用至一鍵登入提示的色彩配置。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | (選用步驟) 預設為使用者系統的預設色彩配置。 | data-color_scheme="dark" |
下表列出可用的色彩配置和說明。
| 色彩配置 | |
|---|---|
default |
根據使用者偏好設定,套用使用者系統的預設色彩配置 (淺色或深色)。 |
light |
套用淺色色彩配置。 |
dark |
套用深色色彩配置。 |
data-auto_prompt
這項屬性決定是否要顯示一鍵登入。預設值為 true。如果這個值為 false,系統就不會顯示 Google One Tap。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 布林值 | 選用 | data-auto_prompt="true" |
data-auto_select
如果只有一個 Google 工作階段核准您的應用程式,這個屬性會決定是否要在使用者不進行任何互動的情況下,自動傳回 ID 權杖。預設值為 false。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 布林值 | 選用 | data-auto_select="true" |
data-login_uri
這個屬性是登入端點的 URI。
這個值必須與您在 Google Auth Platform 中設定的 OAuth 2.0 用戶端授權重新導向 URI 完全相符,且必須符合我們的重新導向 URI 驗證規則。
如果目前網頁是登入網頁,則可省略這個屬性,在這種情況下,憑證預設會發布至這個網頁。
如果未定義回呼函式,且使用者點選「使用 Google 帳戶登入」或「一鍵登入」按鈕,或自動登入,系統會將 ID 權杖憑證回應發布至登入端點。
登入端點必須處理 POST 要求,其中包含 credential 參數,且主體中含有 ID 權杖值。
詳情請參閱下表:
| 類型 | 選用 | 範例 |
|---|---|---|
| 網址 | 預設為目前網頁的 URI,或您指定的值。 如果已設定 data-ux_mode="popup" 和 data-callback,系統會忽略這個屬性。 |
data-login_uri="https://www.example.com/login" |
data-callback
這個屬性是 JavaScript 函式的名稱,用於處理傳回的 ID 權杖。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 如果未設定 data-login_uri,則為必要欄位。 |
data-callback="handleToken" |
可以使用 data-login_uri 和 data-callback 屬性之一。這取決於下列元件和使用者體驗模式設定:
「使用 Google 帳戶登入」按鈕
redirectUX 模式需要data-login_uri屬性,並會忽略data-callback屬性。您必須為 Google One Tap 和 Google 登入按鈕
popupUX 模式設定這兩個屬性之一。如果兩者皆已設定,系統會優先採用data-callback屬性。
HTML API 不支援命名空間中的 JavaScript 函式。請改用不含命名空間的全域 JavaScript 函式。例如,使用 mylibCallback,而非 mylib.callback。
回呼函式會傳遞 CredentialResponse 物件做為參數。如要進一步瞭解可能的回應值,請參閱 CredentialResponse。
data-native_login_uri
這個屬性是密碼憑證處理常式端點的網址。如果您設定 data-native_login_uri 屬性或 data-native_callback 屬性,JavaScript 程式庫會在沒有 Google 工作階段時,改用內建的 Credential Manager。您無法同時設定 data-native_callback 和 data-native_login_uri 屬性。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-login_uri="https://www.example.com/password_login" |
data-native_callback
這個屬性是 JavaScript 函式的名稱,用於處理瀏覽器內建 Credential Manager 傳回的密碼憑證。如果設定 data-native_login_uri 屬性或 data-native_callback 屬性,JavaScript 程式庫會在沒有 Google 工作階段時,改用內建的 Credential Manager。您無法同時設定 data-native_callback 和 data-native_login_uri。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-native_callback="handlePasswordCredential" |
HTML API 不支援命名空間中的 JavaScript 函式。請改用不含命名空間的全域 JavaScript 函式。例如,使用 mylibCallback,而非 mylib.callback。
data-native_id_param
將密碼憑證提交至密碼憑證處理常式端點時,您可以指定 credential.id 欄位的參數名稱。預設名稱為 email。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 網址 | 選用 | data-native_id_param="user_id" |
data-native_password_param
將密碼憑證提交至密碼憑證處理常式端點時,您可以指定 credential.password 值的參數名稱。預設名稱為 password。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 網址 | 選用 | data-native_password_param="pwd" |
data-cancel_on_tap_outside
這項屬性會設定當使用者點選提示以外的區域時,是否要取消一鍵登入要求。預設值為 true。如要停用,請將值設為 false。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 布林值 | 選用 | data-cancel_on_tap_outside="false" |
data-prompt_parent_id
這項屬性會設定容器元素的 DOM ID。如未設定,一鍵登入提示會顯示在視窗右上角。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-prompt_parent_id="parent_id" |
data-skip_prompt_cookie
使用 Cookie 控制一鍵登入提示的顯示。如果這個屬性指定的 Cookie 值不為空白,系統就不會顯示提示。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-skip_prompt_cookie="SID" |
data-nonce
這項屬性是 ID 權杖使用的隨機字串,可防止重送攻擊。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-nonce="biaqbm70g23" |
Nonce 長度上限取決於環境支援的最大 JWT 大小,以及個別瀏覽器和伺服器的 HTTP 大小限制。
data-essential_claims
這個屬性是字串,用於要求在 Google 傳回的 ID 權杖中加入額外要求。如要查看 Google 接受的完整聲明清單,請參閱支援的聲明。
詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-essential_claims="auth_time, amr" |
data-context
這個欄位會變更一鍵登入提示中顯示的標題和訊息文字,但不會影響 ITP 瀏覽器。預設值為 signin。
詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-context="use" |
下表列出所有可用的情境和說明:
| 背景資訊 | |
|---|---|
signin |
「登入」 |
signup |
「註冊」 |
use |
「使用」 |
data-moment_callback
這個屬性是提示 UI 狀態通知事件監聽器的函式名稱。詳情請參閱資料類型 PromptMomentNotification。
詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-moment_callback="logMomentNotification" |
HTML API 不支援命名空間中的 JavaScript 函式。請改用不含命名空間的全域 JavaScript 函式。例如,使用 mylibCallback,而非 mylib.callback。
data-state_cookie_domain
如需在上層網域及其子網域中顯示一鍵登入,請將上層網域傳遞至這個屬性,以便使用單一共用狀態 Cookie。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-state_cookie_domain="example.com" |
data-ux_mode
這項屬性會設定「使用 Google 帳戶登入」按鈕使用的使用者體驗流程。預設值為 popup。這個屬性不會影響一鍵登入使用者體驗。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-ux_mode="redirect" |
下表列出可用的使用者體驗模式和說明。
| 使用者體驗模式 | |
|---|---|
popup |
在彈出式視窗中執行登入使用者體驗流程。 |
redirect |
透過全頁重新導向執行登入使用者體驗流程。 |
data-allowed_parent_origin
允許嵌入中繼 iframe 的來源。如果出現這個屬性,一鍵登入功能會在中繼 iframe 模式下執行。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串或字串陣列 | 選用 | data-allowed_parent_origin="https://example.com" |
下表列出支援的值類型和說明。
| 值類型 | ||
|---|---|---|
string |
單一網域 URI。 | "https://example.com" |
string array |
以半形逗號分隔的網域 URI 清單。 | "https://news.example.com,https://local.example.com" |
如果 data-allowed_parent_origin 屬性的值無效,中繼 iframe 模式的一鍵初始化作業會失敗並停止。
也支援萬用字元前置字串。例如,"https://*.example.com" 會比對 example.com 及其所有層級的子網域 (例如 news.example.com、login.news.example.com)。使用萬用字元時,請注意下列事項:
- 模式字串不得僅由萬用字元和頂層網域組成。舉例來說,
https://.com和https://.co.uk無效,因為"https://.example.com"與example.com及其所有子網域相符。請使用逗號分隔的清單來代表兩個不同的網域。例如,"https://example1.com,https://.example2.com"會比對網域example1.com、example2.com和example2.com的子網域 - 萬用字元網域開頭必須是安全的 https:// 配置,因此
"*.example.com"視為無效。
data-intermediate_iframe_close_callback
當使用者輕觸一鍵登入 UI 中的「X」按鈕,手動關閉一鍵登入時,覆寫預設的中繼 iframe 行為。預設行為是立即從 DOM 中移除中介 iframe。
data-intermediate_iframe_close_callback 欄位僅在中繼 iframe 模式下生效。而且只會影響中介 iframe,而非一鍵登入 iframe。系統會在叫用回呼前移除一鍵登入 UI。
| 類型 | 必填 | 範例 |
|---|---|---|
| 函式 | 選用 | data-intermediate_iframe_close_callback="logBeforeClose" |
HTML API 不支援命名空間中的 JavaScript 函式。請改用不含命名空間的全域 JavaScript 函式。例如,使用 mylibCallback,而非 mylib.callback。
data-itp_support
這個欄位會決定是否要在支援智慧防追蹤 (ITP) 的瀏覽器上,啟用升級版一鍵登入使用者體驗。預設值為 false。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 布林值 | 選用 | data-itp_support="false" |
data-login_hint
如果應用程式事先知道應登入的使用者,可以向 Google 提供登入提示。如果成功,系統會略過帳戶選取步驟。可接受的值包括:電子郵件地址或 ID 權杖 sub 欄位。
詳情請參閱 login_hint 的 OpenID Connect 說明文件。
| 類型 | 必填 | 範例 |
|---|---|---|
字串。可以是電子郵件地址或 ID 權杖中的 sub 欄位值。 |
選用 | data-login_hint="elisa.beckett@gmail.com" |
data-hd
如果使用者有多個帳戶,但只能使用 Workspace 帳戶登入,請使用這項設定向 Google 提供網域名稱提示。如果成功,帳戶選取畫面中顯示的使用者帳戶,會限定為所提供網域的帳戶。萬用字元值:* 只會向使用者提供 Workspace 帳戶,並在選取帳戶時排除消費者帳戶 (user@gmail.com)。
詳情請參閱 hd 的 OpenID Connect 說明文件。
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串。完整網域名稱或 *。 | 選用 | data-hd="*" |
data-use_fedcm_for_prompt
允許瀏覽器控制使用者登入提示,並在網站和 Google 之間協調登入流程。預設值為 false。詳情請參閱「遷移至 FedCM」頁面。
| 類型 | 必填 | 範例 |
|---|---|---|
| 布林值 | 已淘汰 | data-use_fedcm_for_prompt="true" |
data-use_fedcm_for_button
這個欄位會決定是否要在 Chrome (電腦版 M125 以上版本和 Android M128 以上版本) 使用 FedCM 按鈕使用者體驗。預設值為 false。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 布林值 | 選用 | data-use_fedcm_for_button="true" |
data-button_auto_select
這個欄位會決定是否為 FedCM 按鈕流程啟用自動選取選項。啟用後,如果回訪者有有效的 Google 工作階段,系統會自動將他們登入,略過帳戶選擇工具提示。預設為 false。您必須在選擇加入啟動期間,明確啟用按鈕自動登入功能。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 布林值 | 選用 | data-button_auto_select="true" |
類別為「g_id_signin」的元素
如果將 g_id_signin 新增至元素的 class 屬性,元素會轉譯為「使用 Google 帳戶登入」按鈕。
您可以在同一個網頁上顯示多個「使用 Google 帳戶登入」按鈕。每個按鈕都可以有自己的視覺設定。設定由下列資料屬性定義。
視覺資料屬性
下表列出影像資料屬性和說明:
| 屬性 | |
|---|---|
data-type |
按鈕類型:圖示或標準按鈕。 |
data-theme |
按鈕主題。例如 filled_blue 或 filled_black。 |
data-size |
按鈕大小。例如:小或大。 |
data-text |
按鈕文字。例如「使用 Google 帳戶登入」或「使用 Google 帳戶註冊」。 |
data-shape |
按鈕形狀。例如矩形或圓形。 |
data-logo_alignment |
Google 標誌對齊方式:靠左或置中。 |
data-width |
按鈕寬度 (以像素為單位)。 |
data-locale |
按鈕文字會以這項屬性設定的語言顯示。 |
data-click_listener |
如果設定,系統會在使用者點選「使用 Google 帳戶登入」按鈕時呼叫這個函式。 |
data-state |
如果設定,這個字串會與 ID 權杖一起傳回。 |
屬性類型
以下各節將詳細說明各個屬性的類型,並提供範例。
data-type
按鈕類型。預設值為 standard。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 是 | data-type="icon" |
下表列出所有可用的按鈕類型及其說明:
| 類型 | |
|---|---|
standard |
|
icon |
|
data-theme
按鈕主題。預設值為 outline。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-theme="filled_blue" |
下表列出可用的主題和說明:
| 主題 | 範例 | 規格 |
|---|---|---|
outline |
|
填滿:#FFFFFF 筆劃:#747775 | 1 像素 | 內部 字型:#1F1F1F | Roboto Medium | 14/20 個人化:#1F1F1F | Roboto | Medium 12/14 | Regular 11/13 |
filled_blue |
|
填滿:#0B57D0 筆劃:#OB57D0 | 1 像素 | 內側 字型:#FFFFFF | Google Sans Medium | 14/20 個人化:#FFFFFF | Roboto | Medium 12/14 | Regular 11/13 |
filled_black |
|
填滿:#202124 筆劃:#OB57D0 | 1px | 內側 字型:#FFFFFF | Google Sans Medium | 14/20 個人化:#FFFFFF | Roboto | Medium 12/14 | Regular 11/13 |
outline_dark |
|
填滿:#131314 筆劃:#8E918F | 1 像素 | 內部 字型:#FFFFFF | Google Sans Medium | 14/20 個人化:#FFFFFF | Roboto | Medium 12/14 | Regular 11/13 |
data-size
按鈕大小。預設值為 large。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-size="small" |
下表列出可用的按鈕大小和說明。
| 大小 | |
|---|---|
large |
|
medium |
|
small |
|
data-text
按鈕文字。預設值為 signin_with。具有不同 data-text 屬性的圖示按鈕文字,在視覺上沒有差異。唯一的例外是為螢幕無障礙功能朗讀文字。
詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-text="signup_with" |
下表列出可用的按鈕文字和說明:
| 文字 | |
|---|---|
signin_with |
|
signup_with |
|
continue_with |
|
signin |
|
data-shape
按鈕形狀。預設值為 rectangular。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-shape="rectangular" |
下表列出可用的按鈕形狀和說明:
| 圖案 | |
|---|---|
rectangular |
icon 按鈕類型,則與 square 相同。
|
pill |
icon 按鈕類型,則與 circle 相同。 |
circle |
standard 按鈕類型,則與 pill 相同。
|
square |
standard 按鈕類型,則與 rectangular 相同。
|
data-logo_alignment
Google 標誌的對齊方式。預設值為 left。這個屬性僅適用於 standard 按鈕類型。詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-logo_alignment="center" |
下表列出可用的對齊方式和說明:
| logo_alignment | |
|---|---|
left |
|
center |
|
data-width
按鈕寬度下限 (以像素為單位)。寬度上限為 400 像素。
詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-width=400 |
data-locale
(選用步驟) 使用指定語言代碼顯示按鈕文字,否則預設為使用者的 Google 帳戶或瀏覽器設定。載入程式庫時,請在 src 指令中加入 hl 參數和語言代碼,例如:gsi/client?hl=<iso-639-code>。
如未設定,系統會使用瀏覽器的預設語言代碼或 Google 工作階段使用者的偏好設定。因此,不同使用者可能會看到不同版本的本地化按鈕,且大小可能不同。
詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-locale="zh_CN" |
data-click_listener
您可以使用 data-click_listener 屬性,定義點選「使用 Google 帳戶登入」按鈕時要呼叫的 JavaScript 函式。
<script>
function onClickHandler(){
console.log("Sign in with Google button clicked...")
}
</script>
.....
<div class="g_id_signin"
data-size="large"
data-theme="outline"
data-click_listener="onClickHandler">
</div>在這個範例中,當使用者點選「使用 Google 帳戶登入」按鈕時,系統會將「Sign in with Google button clicked...」訊息記錄到控制台。
data-state
選用:由於同一個頁面可以顯示多個「使用 Google 帳戶登入」按鈕,因此您可以為每個按鈕指派專屬字串。系統會傳回相同的字串和 ID 權杖,方便您識別使用者點選了哪個按鈕登入。
詳情請參閱下表:
| 類型 | 必填 | 範例 |
|---|---|---|
| 字串 | 選用 | data-state="button 1" |
伺服器端整合
伺服器端端點必須處理下列 HTTP POST 要求。
ID 權杖處理常式端點
ID 權杖處理常式端點會處理 ID 權杖。根據對應帳戶的狀態,您可以將使用者登入,並將他們導向註冊頁面,或導向帳戶連結頁面,以取得其他資訊。用戶端必須忽略無法辨識的回應參數。
傳送至登入端點的要求範例:
POST /login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: g_csrf_token=<RANDOM_STRING>
Host: www.example.com
credential=<JWT_ENCODED_ID_TOKEN>&g_csrf_token=<RANDOM_STRING>
HTTP POST 要求包含下列資訊:
| 格式 | 名稱 | 說明 |
|---|---|---|
| Cookie | g_csrf_token |
每次向 data-login_uri 指定的登入端點發出要求時,都會變更的隨機字串,必須與 g_csrf_token 要求參數中的值相符。 |
| 要求參數 | g_csrf_token |
隨機字串,每次向 data-login_uri 指定的登入端點發出要求時都會變更,且必須與 g_csrf_token Cookie 的值相符。 |
| 要求參數 | credential |
Google 核發的編碼 JWT ID 權杖。 |
| 要求參數 | state |
只有在使用者點選「使用 Google 帳戶登入」按鈕登入,且按鈕的 state 屬性已指定時,系統才會定義這個參數。 |
憑證
解碼後,ID 權杖會如下所示:
header { "alg": "RS256", "kid": "f05415b13acb9590f70df862765c655f5a7a019e", // JWT signature "typ": "JWT" } payload { "iss": "https://accounts.google.com", // The JWT's issuer "nbf": 161803398874, "aud": "314159265-pi.apps.googleusercontent.com", // Your server's client ID "sub": "3141592653589793238", // The unique ID of the user's Google Account "hd": "gmail.com", // If present, the host domain of the user's Google Workspace email address "auth_time": 1748875426, "amr": ["mfa", "pwd", "tel"], "email": "elisa.g.beckett@gmail.com", // The user's email address "email_verified": true, // true, if Google has verified the email address "azp": "314159265-pi.apps.googleusercontent.com", "name": "Elisa Beckett", // If present, a URL to user's profile picture "picture": "https://lh3.googleusercontent.com/a-/e2718281828459045235360uler", "given_name": "Eliza", "family_name": "Beckett", "iat": 1596474000, // Unix timestamp of the assertion creation time "exp": 1596477600, // Unix timestamp of the assertion expiration time "jti": "abc161803398874def" }
用戶端必須忽略無法辨識的 JWT 宣告。
sub 欄位是 Google 帳戶的全域專屬 ID。只能使用 sub 欄位做為使用者 ID,因為該欄位在所有 Google 帳戶中都是不重複的,且絕不重複使用。
您可以使用 email、email_verified 和 hd 欄位,判斷 Google 是否託管電子郵件地址,且具有該地址的授權。如果 Google 具有權威性,則會確認使用者是合法的帳戶擁有者。
Google 具有權威性的情況:
email的後置字串為@gmail.com,這是 Gmail 帳戶。email_verified為 true 且已設定hd,這是 Google Workspace 帳戶。
使用者可以註冊 Google 帳戶,不一定要使用 Gmail 或 Google Workspace。
如果 email 不含 @gmail.com 尾碼,且沒有 hd,則 Google 不是授權機構,建議使用密碼或其他驗證方法來驗證使用者。email_verified 也可能為 true,因為 Google 最初在建立 Google 帳戶時已驗證使用者,但第三方電子郵件帳戶的擁有權可能已變更。
exp 欄位會顯示您在伺服器端驗證權杖的到期時間。如果是透過「使用 Google 帳戶登入」功能取得的 ID 權杖,則為一小時。您必須在到期前驗證權杖。請勿使用 exp 管理工作階段。ID 權杖過期不代表使用者已登出。應用程式負責管理使用者的工作階段。
g_csrf_token
防偽狀態權杖。這是由 gsi/client 程式庫建立的跨網站要求偽造 (CSRF) 權杖。POST 酬載主體中包含隨機值,同時做為 Cookie 和要求參數。如果伺服器處理要求時,這兩個值不相符,則應視為無效要求。
州
只有在使用者點選「使用 Google 帳戶登入」按鈕登入,且已指定所點選按鈕的 data-state 屬性時,系統才會定義這個參數。這個欄位的值與您在按鈕的 data-state 屬性中指定的值相同。
由於同一個網頁上可以顯示多個「使用 Google 帳戶登入」按鈕,因此您可以為每個按鈕指派專屬字串。因此,您可以使用這個 state 參數,找出使用者點選哪個按鈕登入。
密碼憑證處理常式端點
密碼憑證處理常式端點會處理內建 Credential Manager 擷取的密碼憑證。
HTTP POST 要求包含下列資訊:
| 格式 | 名稱 | 說明 |
|---|---|---|
| Cookie | g_csrf_token |
每次向 data-native_login_uri 指定的登入端點發出要求時,都會變更的隨機字串,必須與 g_csrf_token 要求參數中的值相符。 |
| 要求參數 | g_csrf_token |
隨機字串,每次向 data-native_login_uri 指定的登入端點發出要求時都會變更,且必須與 g_csrf_token Cookie 的值相符。 |
| 要求參數 | email |
Google 核發的 ID 權杖。 |
| 要求參數 | password |
憑證的選取方式。 |