「Google でログイン」JavaScript API リファレンス

このリファレンス ページでは、Sign-In JavaScript API について説明します。この API を使用すると、ウェブページにワンタップ プロンプトまたは [Google でログイン] ボタンを表示できます。

メソッド: google.accounts.id.initialize

google.accounts.id.initialize メソッドは、構成オブジェクトに基づいて「Google でログイン」クライアントを初期化します。メソッドの次のコードサンプルをご覧ください。

google.accounts.id.initialize(IdConfiguration)

次のコードサンプルは、onload 関数を使用して google.accounts.id.initialize メソッドを実装しています。

<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 メソッドを呼び出すのは 1 回だけです。
  • google.accounts.id.initialize メソッドを複数回呼び出すと、最後の呼び出しの設定のみが記憶され、使用されます。

実際には、google.accounts.id.initialize メソッドを呼び出すたびに構成がリセットされ、同じウェブページの以降のすべてのメソッドで新しい構成がすぐに使用されます。

データ型: IdConfiguration

次の表に、IdConfiguration データ型のフィールドと説明を示します。

フィールド
client_id アプリのクライアント ID
auto_select 自動選択を有効にします。
callback ID トークンを処理する JavaScript 関数。Google One Tap と [Google でログイン] ボタンの popup UX モードでこの属性が使用されます。
login_uri ログイン エンドポイントの URL。[Google でログイン] ボタンの redirect UX モードでこの属性が使用されます。
native_callback パスワード認証情報を処理する JavaScript 関数。
cancel_on_tap_outside ユーザーがメッセージの外側をクリックすると、メッセージをキャンセルします。
prompt_parent_id ワンタップ プロンプト コンテナ要素の DOM ID
nonce ID トークンのランダムな文字列
context ワンタップ プロンプトのタイトルと単語
state_cookie_domain 親ドメインとそのサブドメインでワンタップを呼び出す必要がある場合は、親ドメインをこのフィールドに渡して、1 つの共有 Cookie が使用されるようにします。
ux_mode [Google でログイン] ボタンの UX フロー
allowed_parent_origin 中間 iframe の埋め込みを許可するオリジン。このフィールドが存在する場合、ワンタップは中間 iframe モードで実行されます。
intermediate_iframe_close_callback ユーザーがワンタップを手動で閉じると、デフォルトの中間 iframe 動作がオーバーライドされます。
itp_support ITP ブラウザでアップグレードされたワンタップ UX を有効にします。
login_hint ユーザーにヒントを提供して、アカウント選択をスキップします。
hd アカウントの選択をドメインごとに制限する。
use_fedcm_for_prompt ブラウザがユーザーのログイン プロンプトを制御し、ウェブサイトと Google の間でログインフローを仲介できるようにします。
enable_redirect_uri_validation リダイレクト URI の検証ルールに準拠したボタン リダイレクト フローを有効にします。

client_id

このフィールドは、Google Cloud コンソールで確認して作成できるアプリケーションのクライアント ID です。詳しくは、以下の表をご覧ください。

タイプ 必須
文字列 はい client_id: "CLIENT_ID.apps.googleusercontent.com"

auto_select

このフィールドは、アプリを承認した Google セッションが 1 つしかない場合に、ユーザー操作なしで ID トークンが自動的に返されるかどうかを決定します。デフォルト値は false です。詳しくは、次の表をご覧ください。

タイプ 必須
ブール値 省略可 auto_select: true

callback

このフィールドは、ワンタップ プロンプトまたはポップアップ ウィンドウから返された ID トークンを処理する JavaScript 関数です。この属性は、Google One Tap または [Google でログイン] ボタンの popup UX モードを使用する場合に必要です。詳しくは、次の表をご覧ください。

タイプ 必須
関数 ワンタップと popup UX モードでは必須 callback: handleResponse

login_uri

この属性は、ログイン エンドポイントの URI です。

この値は、Google Cloud コンソールで構成した OAuth 2.0 クライアントの承認済みリダイレクト URI のいずれかと完全に一致している必要があります。また、リダイレクト URI の検証ルールに準拠している必要があります。

現在のページがログイン ページである場合は、この属性を省略できます。この場合、認証情報はデフォルトでこのページに投稿されます。

ID トークン認証情報のレスポンスは、ユーザーが [Google でログイン] ボタンをクリックし、リダイレクト UX モードが使用されている場合に、ログイン エンドポイントに投稿されます。

詳しくは、以下の表をご覧ください。

タイプ 省略可
URL デフォルトは、現在のページの URI または指定した値です。
ux_mode: "redirect" が設定されている場合にのみ使用されます。
login_uri: "https://www.example.com/login"

ログイン エンドポイントは、本文に ID トークン値を含む credential キーを含む POST リクエストを処理する必要があります。

ログイン エンドポイントへのリクエストの例を次に示します。

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

このフィールドは、ユーザーがメッセージの外側をクリックした場合にワンタップ リクエストをキャンセルするかどうかを設定します。デフォルト値は true です。値を false に設定すると、無効にできます。詳しくは、以下の表をご覧ください。

タイプ 必須
ブール値 省略可 cancel_on_tap_outside: false

prompt_parent_id

この属性は、コンテナ要素の DOM ID を設定します。設定されていない場合は、ウィンドウの右上にワンタップ プロンプトが表示されます。詳しくは、次の表をご覧ください。

タイプ 必須
文字列 省略可 prompt_parent_id: 'parent_id'

nonce

このフィールドは、リプレイ攻撃を防ぐために ID トークンで使用されるランダムな文字列です。詳しくは、以下の表をご覧ください。

タイプ 必須
文字列 省略可 nonce: "biaqbm70g23"

ノンスの長さは、環境でサポートされている JWT の最大サイズと、個々のブラウザとサーバーの HTTP サイズの制約によって制限されます。

コンテキスト

このフィールドでは、ワンタップ プロンプトのタイトルとメッセージのテキストを変更します。詳しくは、次の表をご覧ください。

タイプ 必須
文字列 省略可 context: "use"

次の表に、使用可能なコンテキストとその説明をすべて示します。

コンテキスト
signin 「Google でログイン」
signup 「Google で登録」
use [Google で使用する]

親ドメインとそのサブドメインにワンタップ表示する必要がある場合は、親ドメインをこのフィールドに渡して、単一の共有状態 Cookie が使用されるようにします。詳しくは、次の表をご覧ください。

タイプ 必須
文字列 省略可 state_cookie_domain: "example.com"

ux_mode

このフィールドを使用して、[Google でログイン] ボタンで使用される UX フローを設定します。デフォルト値は popup です。この属性は、OneTap の UX には影響しません。詳しくは、次の表をご覧ください。

タイプ 必須
文字列 省略可 ux_mode: "redirect"

次の表に、使用可能な UX モードとその説明を示します。

UX モード
popup ポップアップ ウィンドウでログイン UX フローを実行します。
redirect フルページ リダイレクトによってログイン UX フローを実行します。

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 フィールドの値が無効な場合、中間 iframe モードのワンタップ初期化は失敗して停止します。

intermediate_iframe_close_callback

ユーザーがワンタップ UI の [X] ボタンをタップしてワンタップを手動で閉じる場合のデフォルトの中間 iframe 動作をオーバーライドします。デフォルトの動作では、中間 iframe は DOM からすぐに削除されます。

intermediate_iframe_close_callback フィールドは、中間 iframe モードでのみ有効になります。また、影響はワンタップ iframe ではなく、中間 iframe にのみ及ぶため、コールバックが呼び出される前に、ワンタップ UI が削除されます。

タイプ 必須
関数 省略可 intermediate_iframe_close_callback: logBeforeClose

itp_support

このフィールドは、Intelligent Tracking Prevention(ITP)をサポートするブラウザで アップグレードされたワンタップ UX を有効にするかどうかを決定します。デフォルト値は false です。詳しくは、次の表をご覧ください。

タイプ 必須
ブール値 省略可 itp_support: true

login_hint

アプリがログインするユーザーを事前に把握している場合は、Google にログイン ヒントを提供できます。成功すると、アカウントの選択はスキップされます。指定できる値は、メールアドレスまたは ID トークンの sub フィールド値です。

詳細については、OpenID Connect のドキュメントの login_hint フィールドをご覧ください。

タイプ 必須
文字列、メールアドレス、ID トークンの sub フィールドの値。 省略可 login_hint: 'elisa.beckett@gmail.com'

HD

ユーザーが複数のアカウントを持っていて、Workspace アカウントでのみログインする必要がある場合は、これを使用して Google にドメイン名のヒントを提供します。成功すると、アカウント選択時に表示されるユーザー アカウントは、指定されたドメインに限定されます。ワイルドカード値: * は、ユーザーに Workspace アカウントのみを提供し、アカウント選択時に一般ユーザー アカウント(user@gmail.com)を除外します。

詳細については、OpenID Connect ドキュメントの hd フィールドをご覧ください。

タイプ 必須
文字列。完全修飾ドメイン名または *。 省略可 hd: '*'

use_fedcm_for_prompt

ブラウザがユーザーのログイン プロンプトを制御し、ウェブサイトと Google の間でログインフローを仲介できるようにします。デフォルトは false です。詳細については、FedCM への移行のページをご覧ください。

タイプ 必須
ブール値 省略可 use_fedcm_for_prompt: true

enable_redirect_uri_validation

リダイレクト URI の検証ルールに準拠したボタンのリダイレクト フローを有効にします。

タイプ 必須
ブール値 省略可 enable_redirect_uri_validation: true

メソッド: google.accounts.id.prompt

google.accounts.id.prompt メソッドは、initialize() メソッドが呼び出された後に、ワンタップ プロンプトまたはブラウザのネイティブ認証情報マネージャーを表示します。メソッドの次のコードサンプルをご覧ください。

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

通常、prompt() メソッドはページの読み込み時に呼び出されます。Google 側のセッション ステータスとユーザー設定により、ワンタップ プロンプトの UI が表示されないことがあります。さまざまなタイミングの UI ステータスに関する通知を受け取るには、UI ステータス通知を受け取る関数を渡します。

通知は次のタイミングで送信されます。

  • 表示モメント: prompt() メソッドが呼び出された後に発生します。通知には、UI が表示されるかどうかを示すブール値が含まれています。
  • スキップされた瞬間: 自動キャンセルまたは手動キャンセルによってワンタップ プロンプトが閉じられた場合、または選択したセッションで Google からログアウトされた場合など、Google が認証情報を発行できなかった場合に発生します。

    このような場合は、次の ID プロバイダ(存在する場合)に進むことをおすすめします。

  • 閉じたモーメント: Google が認証情報を正常に取得した場合、またはユーザーが認証情報の取得フローを停止した場合に発生します。たとえば、ユーザーがログイン ダイアログでユーザー名とパスワードの入力を開始したときに、google.accounts.id.cancel() メソッドを呼び出してワンタップ プロンプトを閉じ、閉じたモーメントをトリガーできます。

次のコード例は、スキップされた瞬間を実装しています。

<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 アカウントのグローバルに一意の識別子です。sub フィールドは、すべての Google アカウントに固有で、決して再利用されないため、ユーザーの ID としてのみ使用してください。Google アカウントには異なる時点で複数のメールアドレスを設定できるため、メールアドレスを ID として使用しないでください

emailemail_verifiedhd フィールドを使用して、Google がメールアドレスをホストし、そのメールアドレスに対して信頼できるかどうかを判断できます。Google が正式な場合、お客様が正当なアカウント所有者であることが確認されます。

Google が正式な情報源となるケース:

  • email@gmail.com という接尾辞が付いている場合は、Gmail アカウントです。
  • email_verified が true で hd が設定されている場合、これは Google Workspace アカウントです。

ユーザーは Gmail や Google Workspace を使用せずに Google アカウントを登録できます。email@gmail.com 接尾辞が含まれず、hd がない場合、Google は信頼できる情報源ではなく、ユーザーの確認にはパスワードなどのチャレンジ方法をおすすめします。email_verfied は、Google アカウントの作成時に Google がユーザーを最初に確認したため true になることもありますが、サードパーティのメール アカウントの所有権がそれ以降変更されている可能性があります。

exp フィールドには、サーバーサイドでトークンを検証するための有効期限が表示されます。Google でログインから取得した ID トークンは 1 時間です。有効期限が切れる前にトークンを確認する必要があります。セッション管理に exp を使用しないでください。ID トークンの有効期限が切れた場合、ユーザーがログアウトされたわけではありません。ユーザーのセッション管理はアプリが行います。

select_by

次の表に、select_by フィールドで使用できる値を示します。値の設定には、セッションと同意ステータスとともに使用されるボタンのタイプが使用されます。

  • ユーザーが [ワンタップ] ボタンまたは [Google でログイン] ボタンを押すか、タッチレスの自動ログイン プロセスを使用した。

  • 既存のセッションが見つかったか、ユーザーが Google アカウントを選択してログインし、新しいセッションを確立した。

  • ユーザーは、アプリと ID トークンの認証情報を共有する前に、次のいずれかを行います。

    • [確認] ボタンを押して認証情報の共有に同意した
    • 以前に同意を許可し、[アカウントを選択] を使用して Google アカウントを選択している。

このフィールドの値は、次のいずれかのタイプに設定します。

説明
auto 認証情報の共有に同意したことがある既存のセッションを持つユーザーの自動ログイン。FedCM でサポートされていないブラウザにのみ適用されます。
user 以前に同意を許可した既存のセッションを持つユーザーが、ワンタップ [このまま続行] ボタンを押して認証情報を共有しました。FedCM でサポートされていないブラウザにのみ適用されます。
fedcm ユーザーがワンタップの [このユーザーとして続行] ボタンを押して、FedCM を使用して認証情報を共有しました。FedCM でサポートされているブラウザにのみ適用されます。
fedcm_auto FedCM One Tap を使用して認証情報の共有に同意したことがある既存のセッションを持つユーザーの自動ログイン。FedCM でサポートされているブラウザにのみ適用されます。
user_1tap 既存のセッションがあるユーザーがワンタップの [このまま続行] ボタンを押して同意し、認証情報を共有しました。Chrome v75 以降にのみ適用されます。
user_2tap 既存のセッションがないユーザーがワンタップの [このユーザーとして続行] ボタンを押してアカウントを選択し、ポップアップ ウィンドウで [確認] ボタンを押して同意し、認証情報を共有しました。Chromium 以外のブラウザが対象です。
itp 以前に同意を許可した既存のセッションを持つユーザーが、ITP ブラウザでワンタップをクリックしました。
itp_confirm 既存のセッションがあるユーザーが ITP ブラウザでワンタップし、[確認] ボタンを押して同意し、認証情報を共有しました。
itp_add_session 以前に同意を行ったことがあるが、既存のセッションがないユーザーが、ITP ブラウザでワンタップして Google アカウントを選択し、認証情報を共有しました。
itp_confirm_add_session 既存のセッションがないユーザーは、まず ITP ブラウザでワンタップして Google アカウントを選択し、[確認] ボタンを押して同意し、認証情報を共有します。
btn 以前に同意を行った既存のセッションを持つユーザーが、[Google でログイン] ボタンを押して [アカウントを選択] から Google アカウントを選択し、認証情報を共有しました。
btn_confirm 既存のセッションを持つユーザーが [Google でログイン] ボタンを押して [確認] ボタンを押して、同意して認証情報を共有しました。
btn_add_session 以前に同意を行ったことがあるが、既存のセッションのないユーザーが、[Google でログイン] ボタンを押して Google アカウントを選択し、認証情報を共有しました。
btn_confirm_add_session 既存のセッションがないユーザーが、まず [Google でログイン] ボタンを押して Google アカウントを選択し、次に [確認] ボタンを押して同意し、認証情報を共有しました。

state

このフィールドは、ユーザーが [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 ボタンのテーマ。たとえば、filled_blue や filled_black などです。
size ボタンのサイズ。たとえば、小または大などです。
text ボタンのテキスト。(「Google でログイン」や「Google で登録」など)。
shape ボタンの形状。たとえば、長方形や円形などです。
logo_alignment Google ロゴの配置: 左または中央。
width ボタンの幅(ピクセル単位)。
locale 設定されている場合、ボタンの言語がレンダリングされます。
click_listener 設定されている場合、この関数は [Google でログイン] ボタンがクリックされたときに呼び出されます。
state 設定されている場合、この文字列は ID トークンと共に返されます。

属性タイプ

以降のセクションでは、各属性のタイプと例について詳しく説明します。

type

ボタンのタイプ。デフォルト値は standard です。

詳しくは、以下の表をご覧ください。

タイプ 必須
文字列 はい type: "icon"

次の表に、使用可能なボタンの種類とその説明を示します。

タイプ
standard
テキストまたはパーソナライズされた情報を含むボタン。
icon
テキストのないアイコンボタン。

テーマ

ボタンのテーマ。デフォルト値は outline です。詳しくは、次の表をご覧ください。

タイプ 必須
文字列 省略可 theme: "filled_blue"

次の表に、使用可能なテーマとその説明を示します。

テーマ
outline
標準のボタンテーマ。
filled_blue
青色の塗りつぶしボタンのテーマ。
filled_black
黒色の塗りつぶしボタンテーマ。

サイズ

ボタンのサイズ。デフォルト値は large です。詳しくは、次の表をご覧ください。

タイプ 必須
文字列 省略可 size: "small"

次の表に、使用可能なボタンサイズとその説明を示します。

サイズ
large
大きな標準ボタン 大きなアイコンボタン 大きなパーソナライズされたボタン
大きなボタン。
medium
標準のミディアム ボタン 中程度のアイコンボタン
中程度のサイズのボタン。
small
小さなボタン 小さなアイコンボタン
小さなボタン。

テキスト

ボタンのテキスト。デフォルト値は 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 ボタンタイプにのみ適用されます。詳しくは、次の表をご覧ください。

タイプ 必須
文字列 省略可 logo_alignment: "center"

次の表に、使用可能なアライメントとその説明を示します。

logo_alignment
left
Google ロゴを左揃えにします。
center
Google ロゴを中央揃えにします。

ボタンの最小幅(ピクセル単位)。幅の最大値は 400 ピクセルです。

詳しくは、以下の表をご覧ください。

タイプ 必須
文字列 省略可 width: "400"

locale

省略可。指定した言語 / 地域を使用してボタンのテキストを表示します。指定しない場合、ユーザーの Google アカウントまたはブラウザの設定がデフォルトになります。ライブラリを読み込むときに、hl パラメータと言語コードを src ディレクティブに追加します(例: gsi/client?hl=<iso-639-code>)。

設定されていない場合は、ブラウザのデフォルトのロケールまたは Google セッション ユーザーの設定が使用されます。そのため、ユーザーによって表示されるローカライズされたボタンのバージョンが異なる場合があり、サイズが異なる場合もあります。

詳しくは、以下の表をご覧ください。

タイプ 必須
文字列 省略可 locale: "zh_CN"

click_listener

click_listener 属性を使用して、[Google でログイン] ボタンがクリックされたときに呼び出される JavaScript 関数を定義できます。

  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 でログイン] ボタンがクリックされると、[Sign in with Google button clicked...] というメッセージがコンソールに記録されます。

state

省略可。同じページに複数の [Google でログイン] ボタンをレンダリングできるため、各ボタンに固有の文字列を割り当てることができます。ID トークンとともに同じ文字列が返されるため、ユーザーがクリックしてログインしたボタンを特定できます。

詳しくは、以下の表をご覧ください。

タイプ 必須
文字列 省略可 data-state: "button 1"

データ型: 認証情報

native_callback 関数が呼び出されると、Credential オブジェクトがパラメータとして渡されます。次の表に、オブジェクトに含まれるフィールドを示します。

フィールド
id ユーザーを識別します。
password パスワード

メソッド: google.accounts.id.disableAutoSelect

ユーザーがウェブサイトからログアウトしたときに、メソッド google.accounts.id.disableAutoSelect を呼び出して Cookie にステータスを記録する必要があります。これにより、UX デッドループを防ぐことができます。メソッドの次のコード スニペットをご覧ください。

google.accounts.id.disableAutoSelect()

次のコードサンプルは、onSignout() 関数を使用して google.accounts.id.disableAutoSelect メソッドを実装しています。

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

メソッド: google.accounts.id.storeCredential

このメソッドは、ブラウザのネイティブ認証情報マネージャー API の store() メソッドのラッパーです。したがって、パスワード認証情報を保存する場合にのみ使用できます。メソッドの次のコードサンプルをご覧ください。

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

次のコードサンプルは、onSignIn() 関数を使用して google.accounts.id.storeCredential メソッドを実装しています。

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

メソッド: google.accounts.id.cancel

リレーリング パーティの DOM からプロンプトを削除すると、ワンタップ フローをキャンセルできます。認証情報がすでに選択されている場合、キャンセル オペレーションは無視されます。メソッドの次のコードサンプルをご覧ください。

google.accounts.id.cancel()

次のコードサンプルは、onNextButtonClicked() 関数を使用して google.accounts.id.cancel() メソッドを実装しています。

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

ライブラリ読み込みコールバック: onGoogleLibraryLoad

onGoogleLibraryLoad コールバックを登録できます。これは、Sign In with 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 トークンを共有するために使用される OAuth 権限を取り消します。メソッドの次のコード スニペットをご覧ください。 javascript google.accounts.id.revoke(login_hint, callback)

パラメータ 説明
login_hint 文字列 ユーザーの Google アカウントのメールアドレスまたは一意の ID。ID は、認証情報ペイロードの sub プロパティです。
callback 関数 省略可能な RevocationResponse ハンドラ。

次のコードサンプルは、ID で revoke メソッドを使用する方法を示しています。

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

データ型: RevocationResponse

callback 関数が呼び出されると、RevocationResponse オブジェクトがパラメータとして渡されます。次の表に、取り消しレスポンス オブジェクトに含まれるフィールドを示します。

フィールド
successful このフィールドは、メソッド呼び出しの戻り値です。
error このフィールドには、詳細なエラー レスポンス メッセージが含まれます(省略可)。

成功

このフィールドは、取り消しメソッド呼び出しが成功した場合は true、失敗した場合は false に設定されるブール値です。

エラー

このフィールドは文字列値で、取り消しメソッド呼び出しが失敗した場合に詳細なエラー メッセージが含まれます。成功した場合は未定義です。