「使用 Google JavaScript API 登入」參考資料

本參考頁面說明 Sign-In JavaScript API。您可以使用這個 API ,藉此在網頁上顯示「One Tap 提示」或「使用 Google 帳戶登入」按鈕。

方法:google.accounts.id.initialize

google.accounts.id.initialize 方法會將「使用 Google 帳戶登入」功能初始化 建立新的 Pod 執行個體請查看以下 方法:

google.accounts.id.initialize(IdConfiguration)

以下程式碼範例實作 google.accounts.id.initialize 方法 取代為 onload 函式:

<script>
  window.onload = function () {
    google.accounts.id.initialize({
      client_id: 'YOUR_GOOGLE_CLIENT_ID',
      callback: handleCredentialResponse
    });
    google.accounts.id.prompt();
  };
</script>

google.accounts.id.initialize 方法會建立「使用 Google 帳戶登入」用戶端 執行個體,可供相同網頁中的所有模組間接使用。

  • 您只需要呼叫 google.accounts.id.initialize 方法一次 如果您使用了多個模組 (例如 One Tap、個人化按鈕、撤銷 等)。
  • 如果多次呼叫 google.accounts.id.initialize 方法 系統只會記住並使用最後呼叫中的設定。

其實每次呼叫 google.accounts.id.initialize 方法,且所有後續方法都具有相同的 立即改用新設定

資料類型:IdConfiguration

下表列出 IdConfiguration 的欄位和說明 資料類型:

欄位
client_id 應用程式的用戶端 ID
auto_select 啟用自動選取功能。
callback 處理 ID 權杖的 JavaScript 函式。Google One Tap 和 「使用 Google 帳戶登入」按鈕 popup 使用者體驗模式都會使用這個 屬性。
login_uri 登入端點的網址。「使用 Google 帳戶登入」按鈕 redirect 使用者體驗模式會使用這項屬性。
native_callback 處理密碼憑證的 JavaScript 函式。
cancel_on_tap_outside 如果使用者點選提示以外的畫面,則取消提示。
prompt_parent_id One Tap 提示容器元素的 DOM ID
nonce ID 權杖的隨機字串
context One Tap 提示中的標題和字詞
state_cookie_domain 如果您需要在上層網域及其子網域中呼叫 One Tap, 傳遞上層網域到這個欄位,讓一個共用 Cookie 可以
ux_mode 「使用 Google 帳戶登入」按鈕的使用者體驗流程
allowed_parent_origin 允許嵌入中繼 iframe 的來源。輕觸一下 如有這個欄位,就會在中繼 iframe 模式執行。
intermediate_iframe_close_callback 在使用者手動時覆寫預設的中繼 iframe 行為 關閉「One Tap」。
itp_support 在 ITP 瀏覽器中啟用升級版 One Tap 使用者體驗。
login_hint 提供使用者提示,略過帳戶選取程序。
hd 依網域限制帳戶選取範圍。
use_fedcm_for_prompt 允許瀏覽器控管使用者的登入提示並中介服務 登入流程

client_id

這個欄位是應用程式的用戶端 ID;您可以在 存取 Google Cloud 控制台詳情請參閱下表:

類型 必填 範例
字串 client_id: "CLIENT_ID.apps.googleusercontent.com"

auto_select

這個欄位會決定在沒有使用者的情況下,自動傳回 ID 權杖 (應用程式僅透過一個 Google 工作階段獲得核准) 。預設值為 false。詳情請參閱下表 每個 ACL 都由一或多個項目組成 而這些項目包含兩項資訊

類型 必填 範例
布林值 選用 auto_select: true

callback

這個欄位是一個 JavaScript 函式,會處理其傳回的 ID 權杖 One Tap 提示或彈出式視窗如果 Google 使用 One Tap 或「使用 Google 帳戶登入」按鈕 popup 使用者體驗模式。詳情請參閱 請參閱下表:

類型 必填 範例
函式 必須啟用 One Tap 和 popup 使用者體驗模式 callback: handleResponse

login_uri

這個屬性就是您登入端點的 URI。

這個值必須與其中一個授權的 OAuth 重新導向 URI 完全相符 2.0 用戶端 (您已設定) 且必須符合我們的重新導向 URI 驗證 規則

如果目前的頁面是登入頁面,可以省略這項屬性, 在此情況下,憑證會預設為張貼在此頁。

當使用者有使用者時,ID 權杖憑證回應會發布到您的登入端點 接著按一下「使用 Google 帳戶登入」按鈕,然後重新導向使用者體驗模式。

詳情請參閱下表:

類型 選用 範例
網址 預設為目前網頁的 URI 或您指定的值。
只有在已設定 ux_mode: "redirect" 的情況下才能使用。
login_uri: "https://www.example.com/login"

您的登入端點必須處理內含 credential 鍵,其中包含 內文中的 ID 權杖值。

以下是向登入端點發出的要求範例:

POST /login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded

credential=ID_TOKEN

native_callback

這個欄位是處理密碼的 JavaScript 函式名稱。 瀏覽器的原生憑證管理員傳回的憑證。詳情請參閱 請參閱下表:

類型 必填 範例
函式 選用 native_callback: handleResponse

cancel_on_tap_outside

這個欄位會設定當使用者點選時,是否取消 One Tap 要求 。預設值為 true。您可以停用此功能 設為 false。詳情請參閱下表:

類型 必填 範例
布林值 選用 cancel_on_tap_outside: false

prompt_parent_id

這項屬性可以設定容器元素的 DOM ID。如未設定, 視窗右上角會顯示一觸提示。詳情請參閱 請參閱下表:

類型 必填 範例
字串 選用 prompt_parent_id: 'parent_id'

Nonce

這個欄位是 ID 權杖使用的隨機字串,用於防範重播攻擊。 詳情請參閱下表:

類型 必填 範例
字串 選用 nonce: "biaqbm70g23"

Nonce 長度會受限於環境支援的 JWT 大小上限。 以及個別瀏覽器和伺服器的 HTTP 大小限制

context

這個欄位會變更 One Tap 提示中的標題和訊息文字。詳情請見 請參閱下表:

類型 必填 範例
字串 選用 context: "use"

下表列出所有可用的背景資訊及其說明:

脈絡
signin 「使用 Google 帳戶登入」
signup 註冊 Google
use 「與 Google 搭配使用」

如果您需要在上層網域及其子網域中顯示 One Tap,請將 上層網域到這個欄位,才能只使用一個共用狀態 Cookie。詳情請見 請參閱下表:

類型 必填 範例
字串 選用 state_cookie_domain: "example.com"

ux_mode

使用這個欄位設定「使用 Google 帳戶登入」按鈕所用的使用者體驗流程。預設值為 popup。這項屬性不會影響 OneTap 使用者體驗。詳情請參閱 請參閱下表:

類型 必填 範例
字串 選用 ux_mode: "redirect"

下表列出可用的使用者體驗模式及其說明。

使用者體驗模式
popup 在彈出式視窗中執行登入使用者體驗流程。
redirect 透過完整頁面重新導向執行登入使用者體驗流程。

allowed_parent_origin

允許嵌入中繼 iframe 的來源。One Tap 跑步 在中繼 iframe 模式中 (如果有的話)。請參閱以下資訊 表格,進一步瞭解詳情:

類型 必填 範例
字串或字串陣列 選用 allowed_parent_origin: "https://example.com"

下表列出支援的值類型及其說明。

值類型
string 單一網域 URI。 "https://example.com"
string array 網域 URI 陣列。 ["https://news.example.com", "https://local.example.com"]

系統也支援萬用字元前置字元。例如:"https://*.example.com" 比對所有層級的 example.com 及其子網域 (例如 news.example.comlogin.news.example.com)。使用 萬用字元:

  • 模式字串不能僅由萬用字元和頂層組成 網域。舉例來說,https://.comhttps://.co.uk 無效;如上所述,"https://.example.com" 比對 example.com 及其子網域。您也可以使用 陣列,代表 2 個不同的網域。例如: ["https://example1.com", "https://.example2.com"] 個相符的項目 example1.comexample2.comexample2.com 的子網域
  • 萬用字元網域的開頭必須是安全的 https:// 配置, 系統會將 "*.example.com" 視為無效。

如果「allowed_parent_origin」欄位的值無效,則 One Tap 中繼 iframe 模式的初始化作業會失敗並停止。

intermediate_iframe_close_callback

在使用者手動關閉 One 時覆寫預設的中繼 iframe 行為 輕觸「X」即可輕觸一下按鈕。預設行為是 立即從 DOM 中移除中繼 iframe。

intermediate_iframe_close_callback 欄位僅會在中繼中生效 iframe 模式。它只會影響中繼 iframe,而非 一鍵顯示 iframe。系統會在叫用回呼前移除 One Tap UI。

類型 必填 範例
函式 選用 intermediate_iframe_close_callback: logBeforeClose

itp_support

這個欄位會決定 升級版 One Tap 使用者體驗 瀏覽器必須啟用智慧型追蹤防範機制 (ITP)。預設值為 false。詳情請參閱下表 每個 ACL 都由一或多個項目組成 而這些項目包含兩項資訊

類型 必填 範例
布林值 選用 itp_support: true

login_hint

如果應用程式事先知道應登入哪個使用者, 向 Google 提供登入提示。成功後,系統會略過帳戶選取作業。 接受的值如下:電子郵件地址或 ID 權杖 sub 欄位值。

詳情請參閱 OpenID Connect 中的 login_hint 欄位 說明文件。

類型 必填 範例
字串、電子郵件地址或 ID 權杖中的值 「sub」欄位。 選用 login_hint: 'elisa.beckett@gmail.com'

HD 高畫質

如果使用者擁有多個帳戶,且只應使用 Workspace 登入 帳戶會使用這項資訊將網域名稱提示提供給 Google。如果成功的話,使用者 帳戶選取時只會顯示在提供的網域內。 萬用字元值「*」只會為使用者提供 Workspace 帳戶,且不含 個人帳戶 (<使用者>@gmail.com)。

詳情請參閱 OpenID Connect 說明文件中的 hd 欄位。

類型 必填 範例
字串。完整網域名稱或 *。 選用 hd: '*'

use_fedcm_for_prompt

允許瀏覽器控管使用者的登入提示及啟動登入流程 你的網站和 Google 之間的關聯預設值為 false。請參閱遷移至 FedCM 頁面。

類型 必填 範例
布林值 選用 use_fedcm_for_prompt: true

方法:google.accounts.id.prompt

google.accounts.id.prompt 方法會顯示 One Tap 提示或 。initialize() 請參閱下列方法的程式碼範例:

 google.accounts.id.prompt(/**
 @type{(function(!PromptMomentNotification):void)=} */ momentListener)

一般來說,載入網頁時會呼叫 prompt() 方法。課程結束 那麼,One Tap 提示使用者介面可能並未 高度。如要取得不同時間點的 UI 狀態通知,請傳送 函式來接收 UI 狀態通知。

通知會在下列時機觸發:

  • 顯示時刻:呼叫 prompt() 方法後就會發生此情況。 通知包含一個布林值,指出使用者介面 不一定會顯示
  • 略過的時刻:如果 One Tap 提示自動關閉,便會顯示這類提示 取消、手動取消或 Google 無法核發憑證的情況,例如 系統就會傳送快訊通知

    在這種情況下,建議您繼續透過下一個身分識別 軟體供應商 (如果有的話)

  • 已關閉的時刻:如果 Google 成功擷取 或使用者想要停止憑證擷取流程。適用對象 例如,使用者開始在 登入對話方塊,您可以呼叫 google.accounts.id.cancel() 方法來關閉 One Tap 提示並觸發關閉時機

以下程式碼範例會實作略過的時刻:

<script>
  window.onload = function () {
    google.accounts.id.initialize(...);
    google.accounts.id.prompt((notification) => {
      if (notification.isNotDisplayed() || notification.isSkippedMoment()) {
        // continue with another identity provider.
      }
    });
  };
</script>

資料類型:PromptMomentNotification

下表列出 PromptMomentNotification 資料類型:

方法
isDisplayMoment() 這則通知是要顯示螢幕時間嗎?

注意: 如果 FedCM 符合下列條件, 啟用,則不會觸發這則通知。詳情請見 遷移至 FedCM 頁面。
isDisplayed() 這則通知是顯示畫面時間,而 UI 是 出現?

注意: 如果 FedCM 符合下列條件, 啟用,則不會觸發這則通知。詳情請見 遷移至 FedCM 頁面。
isNotDisplayed() 這則通知是顯示時間,且 UI 不是 出現?

注意: 如果 FedCM 符合下列條件, 啟用,則不會觸發這則通知。詳情請見 遷移至 FedCM 頁面。
getNotDisplayedReason()

未顯示 UI 的詳細原因。以下是 可能的值:

  • browser_not_supported
  • invalid_client
  • missing_client_id
  • opt_out_or_no_session
  • secure_http_required
  • suppressed_by_user
  • unregistered_origin
  • unknown_reason
注意: 如果 FedCM 符合下列條件, ,系統不支援這個方法。詳情請見 遷移至 FedCM 頁面。
isSkippedMoment() 這則通知是暫時略過的嗎?
getSkippedReason()

略過時刻的詳細原因。以下是 可能的值:

  • auto_cancel
  • user_cancel
  • tap_outside
  • issuing_failed
注意: 如果 FedCM 符合下列條件, ,系統不支援這個方法。詳情請見 遷移至 FedCM 頁面。
isDismissedMoment() 這則通知是關於已關閉的時刻嗎?
getDismissedReason()

詳細原因。可能的情況如下: 值:

  • credential_returned
  • cancel_called
  • flow_restarted
getMomentType()

傳回時刻類型的字串。可能的情況如下: 值:

  • display
  • skipped
  • dismissed

資料類型:CredentialResponse

叫用 callback 函式時,會有一個 CredentialResponse 物件 再以參數的形式傳送下表為 中:

欄位
credential 這個欄位是傳回的 ID 權杖。
select_by 這個欄位會設定憑證的選取方式,
state 這個欄位只有在使用者點選「使用 Google 帳戶登入」功能時才會定義 登入按鈕,以及按鈕的「state」 屬性。

憑證

這個欄位是採用 Base64 編碼 JSON Web Token (JWT) 字串的 ID 權杖。

時間 JWT 的範例如下列範例:

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 GSuite email address
  "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": "Elisa",
  "family_name": "Beckett",
  "iat": 1596474000, // Unix timestamp of the assertion's creation time
  "exp": 1596477600, // Unix timestamp of the assertion's expiration time
  "jti": "abc161803398874def"
}

sub 欄位是 Google 帳戶的全域專屬 ID。只有 使用 sub 欄位做為使用者的 ID,因為該欄位在所有 Google 服務中都不重複 且永不重複使用。不要使用電子郵件地址做為 ID,因為 單一 Google 帳戶可在不同時間點使用多個電子郵件地址。

您可以使用 emailemail_verifiedhd 欄位判斷 Google 是否 且具公信力的電子郵件地址。如果 Google 且已確認為合法帳戶擁有者。

Google 具有公信力的案例:

  • email 的尾碼是 @gmail.com,這是 Gmail 帳戶。
  • email_verified 為 true,且已設定 hd,此為 Google Workspace 讓他們使用服務帳戶

使用者註冊 Google 帳戶時可能未使用 Gmail 或 Google Workspace。 如果 email 不包含 @gmail.com 後置字串,且 hd 不是 Google 的值, 建議使用無權威性密碼、密碼或其他驗證方式, 以驗證使用者email_verfied 也可能是 Google 最初驗證過的網站 使用者,不過第三項擁有權 卻可能有所變更。

exp 欄位會顯示到期時間,供您在 伺服器端。一小時 取得從「使用 Google 帳戶登入」功能取得的 ID 符記。您需要驗證 憑證 讓應用程式從可以最快做出回應的位置 回應使用者要求請勿將 exp 用於管理工作階段。過期的 ID 權杖 「不」代表使用者已登出。您的應用程式負責工作階段 來管理使用者

select_by

下表列出 select_by 欄位的可能值。 與工作階段和同意聲明狀態搭配使用的按鈕類型 值

  • 使用者按下 One Tap 或「使用 Google 帳戶登入」按鈕,或使用 不必接觸式自動登入程序

  • 找到現有的工作階段,或使用者選取並登入 建立新的工作階段。

  • 與應用程式使用者共用 ID 權杖憑證前

    • 按下「確認」按鈕同意共用憑證, 或
    • 先前曾授予同意聲明,並使用「選取帳戶」選擇 Google 帳戶。

這個欄位的值已設為這裡的其中之一

說明
auto 自動登入已採用現有工作階段的使用者 先前表示同意共用憑證。僅適用於 非 FedCM 支援的瀏覽器。
user 既有工作階段已授予同意聲明的使用者 按下 One Tap 的「以下列身分繼續」按鈕,點選即可共用憑證。適用 僅適用於非 FedCM 的瀏覽器。
fedcm 使用者按下 One Tap 的「以下列身分繼續」按鈕用於分享的按鈕 取得憑證僅適用於 FedCM 支援
fedcm_auto 自動登入已採用現有工作階段的使用者 先前已同意透過 FedCM One Tap 分享憑證。 僅適用於 FedCM 支援
user_1tap 目前已有工作階段的使用者按下 One Tap [以下列身分繼續] 按鈕,用於表示同意及分享憑證。僅適用於 Chrome v75 以上版本。
user_2tap 目前無現有工作階段的使用者按下 One Tap [以下列身分繼續] 以選取帳戶並按下 表示同意並共用憑證的彈出式視窗。套用至: 不是以 Chromium 為基礎的瀏覽器
btn 既有工作階段的使用者,先前已同意 按下「使用 Google 帳戶登入」按鈕,然後從中選取 Google 帳戶 「選擇帳戶」來共用憑證
btn_confirm 目前已有工作階段的使用者按下「使用 Google 帳戶登入」按鈕 並按下「確認」按鈕,表示同意並共用憑證。
btn_add_session 沒有先前授予工作階段的使用者 同意按下「使用 Google 帳戶登入」按鈕選取 Google 帳戶 並提供憑證
btn_confirm_add_session 目前無工作階段的使用者先按下「使用 Google 帳戶登入」 按下按鈕以選取 Google 帳戶,然後按下「確認」 按鈕,表示同意並共用憑證。

這個欄位只會在使用者點選「使用 Google 帳戶登入」按鈕後定義 登入,即可指定點選按鈕的 state 屬性。 這個欄位的值與您在按鈕的 state 屬性。

由於同一個頁面可以顯示多個「使用 Google 帳戶登入」按鈕, 就能為每個按鈕指派不重複的字串因此,您可以看到這個 state 欄位 以便識別使用者點選登入的按鈕。

方法:google.accounts.id.renderButton

google.accounts.id.renderButton 方法會呈現「使用 Google 帳戶登入」功能 按鈕。

請參閱下列方法的程式碼範例:

google.accounts.id.renderButton(
      /** @type{!HTMLElement} */ parent,
      /** @type{!GsiButtonConfiguration} */ options
    )

資料類型:GsiButtonConfiguration

下表列出 GsiButtonConfiguration 資料類型:

屬性
type 按鈕類型:圖示或標準按鈕。
theme 按鈕主題。例如「fill_blue」或「fill_black」。
size 按鈕大小。例如大或小。
text 按鈕文字。例如「使用 Google 帳戶登入」或 「使用 Google 帳戶註冊」。
shape 按鈕形狀。例如矩形或圓形。
logo_alignment Google 標誌對齊方式:靠左或置中。
width 按鈕寬度,以像素為單位。
locale 如果設定此屬性,系統就會算繪按鈕語言。
click_listener 設定後,系統會在「使用 Google 帳戶登入」功能呼叫此函式 按鈕。
state 若已設定,這個字串會傳回 ID 權杖。

屬性類型

以下各節詳細說明瞭每個屬性的類型, 範例。

類型

按鈕類型。預設值為 standard

詳情請參閱下表:

類型 必填 範例
字串 type: "icon"

下表列出可用的按鈕類型及其可用按鈕類型 說明:

類型
standard
含有文字或個人化資訊的按鈕。
icon
不含文字的圖示按鈕。

主題

按鈕主題。預設值為 outline。請參閱下表 其他資訊:

類型 必填 範例
字串 選用 theme: "filled_blue"

下表列出可用的主題及其說明:

主題
outline
標準按鈕主題。
filled_blue
藍色填滿的按鈕主題。
filled_black
黑白按鈕主題。

大小

按鈕大小。預設值為 large。請參閱下表 其他資訊:

類型 必填 範例
字串 選用 size: "small"

下表列出可用的按鈕大小及其說明:

大小
large
大型標準按鈕 大型圖示按鈕 大型的個人化按鈕
大型按鈕。
medium
中型標準按鈕 中型圖示按鈕
中型按鈕。
small
一個小按鈕 小型圖示按鈕
小按鈕。

text

按鈕文字。預設值為 signin_with。廣告沒有任何影像 不同 text 屬性的圖示按鈕文字差異。 唯一的例外是系統為了螢幕無障礙而讀出文字時。

詳情請參閱下表:

類型 必填 範例
字串 選用 text: "signup_with"

下表列出「所有」可用的按鈕文字及其 說明:

文字
signin_with
按鈕文字為「使用 Google 帳戶登入」。
signup_with
按鈕文字為「註冊 Google」。
continue_with
按鈕文字為「繼續使用 Google 帳戶」。
signin
按鈕文字為「登入」。

形狀

按鈕形狀。預設值為 rectangular。請參閱下表 瞭解詳情:

類型 必填 範例
字串 選用 shape: "rectangular"

下表列出可用的按鈕形狀及其說明:

圖案
rectangular
矩形按鈕。用於 icon 按鈕類型,則與 square 相同。
pill
藥形按鈕。如果用於「icon」按鈕 就會與 circle 相同。
circle
圓形按鈕。用於 standard 按鈕類型,則與 pill 相同。
square
方形按鈕。用於 standard 按鈕類型,則與 rectangular 相同。

logo_alignment

Google 標誌的對齊方式。預設值為 left。此屬性 僅適用於 standard 按鈕類型。詳情請參閱下表 每個 ACL 都由一或多個項目組成 而這些項目包含兩項資訊

類型 必填 範例
字串 選用 logo_alignment: "center"

下表列出可用的對齊方式及其說明:

logo_alignment
left
將 Google 標誌靠左對齊。
center
與 Google 標誌置中對齊。

寬度

按鈕寬度下限 (以像素為單位)。寬度上限為 400 像素。

詳情請參閱下表:

類型 必填 範例
字串 選用 width: "400"

語言代碼

選用設定。使用指定語言代碼顯示按鈕文字,否則會預設為 使用者的 Google 帳戶或瀏覽器設定新增 hl 參數並 例如: gsi/client?hl=<iso-639-code>

如果不設定這項政策,表示瀏覽器的預設語言代碼或 Google 工作階段使用者的設定 偏好設定。因此,不同使用者可能會看到 本地化按鈕,並可能使用不同的大小。

詳情請參閱下表:

類型 必填 範例
字串 選用 locale: "zh_CN"

click_listener

您可以定義在「使用 Google 帳戶登入」功能中呼叫的 JavaScript 函式 已透過 click_listener 屬性點選按鈕。

  google.accounts.id.renderButton(document.getElementById("signinDiv"), {
      theme: 'outline',
      size: 'large',
      click_listener: onClickHandler
    });

  
  function onClickHandler(){
    console.log("Sign in with Google button clicked...")
  }
  

在這個範例中,系統會記錄「使用 Google 帳戶登入」按鈕。 ;

選用,因為多個「使用 Google 帳戶登入」按鈕都能顯示在 頁面,您可以使用不重複的字串為每個按鈕指派專屬字串。相同字串 會傳回 ID 符記,這樣您就能找出哪個按鈕使用者 即可登入。

詳情請參閱下表:

類型 必填 範例
字串 選用 data-state: "button 1"

資料類型:憑證

當您 native_callback 叫用函式時,系統會傳遞 Credential 物件做為參數。 下表列出物件中的欄位:

欄位
id 用於識別使用者,
password 密碼

方法:google.accounts.id.disableAutoSelect

使用者登出網站後,您需要呼叫該方法 google.accounts.id.disableAutoSelect 可記錄 Cookie 中的狀態。這個 可避免使用者體驗死循環請參閱下列方法的程式碼片段:

google.accounts.id.disableAutoSelect()

以下程式碼範例會實作 google.accounts.id.disableAutoSelect 方法:onSignout()

<script>
  function onSignout() {
    google.accounts.id.disableAutoSelect();
  }
</script>

方法:google.accounts.id.storeCredential

此方法是瀏覽器原生 store() 方法的包裝函式 credential Manager API。因此只能用來儲存密碼 憑證請參閱下列方法的程式碼範例:

google.accounts.id.storeCredential(Credential, callback)

以下程式碼範例會實作 google.accounts.id.storeCredential 方法:onSignIn()

<script>
  function onSignIn() {
    let cred = {id: '...', password: '...'};
    google.accounts.id.storeCredential(cred);
  }
</script>

方法:google.accounts.id.cancel

如果移除依賴方的提示,可以取消 One Tap 流程 。如果已選取憑證,系統會忽略取消作業。詳情請見 以下程式碼的程式碼範例:

google.accounts.id.cancel()

以下程式碼範例實作 google.accounts.id.cancel() 方法 取代為 onNextButtonClicked() 函式:

<script>
  function onNextButtonClicked() {
    google.accounts.id.cancel();
    showPasswordPage();
  }
</script>

程式庫載入回呼:onGoogleLibraryLoad

您可以註冊 onGoogleLibraryLoad 回呼。使用者登入後 「使用 Google JavaScript 程式庫」已載入:

window.onGoogleLibraryLoad = () => {
    ...
};

這個回呼只是 window.onload 回呼的捷徑。沒有任何 行為差異

以下程式碼範例會實作 onGoogleLibraryLoad 回呼:

<script>
  window.onGoogleLibraryLoad = () => {
   google.accounts.id.initialize({
     ...
   });
   google.accounts.id.prompt();
  };
</script>

方法:google.accounts.id.revoke

google.accounts.id.revoke 方法會撤銷用來共用 指定使用者的 ID 權杖。請參閱下列方法的程式碼片段: javascript google.accounts.id.revoke(login_hint, callback)

參數 類型 說明
login_hint 字串 使用者 Google 帳戶的電子郵件地址或專屬 ID。ID 是物件的 sub 屬性 credential 酬載。
callback 函式 選用的 RevocationResponse 處理常式。

以下程式碼範例顯示如何使用具有 ID 的 revoke 方法。

  google.accounts.id.revoke('1618033988749895', done => {
    console.log(done.error);
  });

資料類型:RevocationResponse

叫用 callback 函式時,會有一個 RevocationResponse 物件 再以參數的形式傳送下表為 登錄到:

欄位
successful 這個欄位是方法呼叫的傳回值。
error 這個欄位可選擇包含詳細的錯誤回應訊息。

成功

如果撤銷方法呼叫成功,這個欄位會設為 true 或 失敗時則為 false。

錯誤

這個欄位是字串值,如果撤銷 方法呼叫失敗,表示成功時未定義。