ウェブ向け Google ログイン JavaScript プラットフォーム ライブラリが廃止されます。このライブラリは、2023 年 3 月 31 日のサポート終了日以降にダウンロードできなくなります。代わりに、ウェブ向けの新しい Google Identity Services を使用してください。
新しく作成されたクライアント ID は、デフォルトで古いプラットフォーム ライブラリを使用できなくなり、既存のクライアント ID は影響を受けません。2022 年 7 月 29 日より前に作成された新しいクライアント ID では、"plugin_name" を設定して Google プラットフォーム ライブラリの使用を有効にすることができます。

Google ログイン JavaScript クライアント リファレンス

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このリファレンスでは、ウェブ アプリケーションに Google ログインを実装する際に使用する JavaScript のクライアント メソッドと属性について説明します。

ライブラリの使用中に問題が発生した場合は、GitHub リポジトリにご報告ください。

認証の設定

Google API プラットフォーム ライブラリを読み込んで、gapi オブジェクトを作成します。

<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>

プラットフォーム ライブラリが読み込まれたら、auth2 ライブラリを読み込みます。

function init() {
  gapi.load('auth2', function() {
    /* Ready. Make a call to gapi.auth2.init or some other API */
  });
}

gapi.auth2.init(params)

GoogleAuth オブジェクトを初期化します。gapi.auth2.GoogleAuth のメソッドを呼び出す前に、このメソッドを呼び出す必要があります。

GoogleAuth オブジェクトを初期化するときに、OAuth 2.0 クライアント ID と追加のオプションを指定してオブジェクトを構成します。次に、ユーザーがすでにログインしている場合は、GoogleAuth オブジェクトは前のセッションからのユーザーのログイン状態を復元します。

引数
params クライアントの設定データの Key-Value ペアを含むオブジェクト。構成可能なさまざまなプロパティについては、gapi.auth2.ClientConfig をご覧ください。例:
{
  client_id: 'CLIENT_ID.apps.googleusercontent.com'
}
戻り値
gapi.auth2.GoogleAuth gapi.auth2.GoogleAuth オブジェクト。then() メソッドを使用すると、gapi.auth2.GoogleAuth オブジェクトの初期化が完了したときに解決される Promise を取得できます。

GoogleAuth.then(onInitonError

GoogleAuth オブジェクトが完全に初期化されたときに、onInit 関数を呼び出します。初期化中にエラーが発生した場合(サポートされていない古いブラウザで起こる可能性があります)、代わりに onError 関数が呼び出されます。

引数
onInit 完全に初期化されたときに GoogleAuth オブジェクトで呼び出す関数。
onError GoogleAuth の初期化に失敗した場合に呼び出される、error プロパティを含むオブジェクト。
戻り値
Promise A [A]Promiseこれは、onInit関数が完了するか、初期化エラーが発生した場合は拒否されます。onInit 関数から返された値があれば解決されます。

エラーコード

idpiframe_initialization_failed
たとえば、サポートされていない環境が原因で、必要な iframe を Google から初期化できませんでした。details プロパティは、発生したエラーに関する詳細情報を提供します。

gapi.auth2.ClientConfig

gapi.auth2.init メソッドのさまざまな構成パラメータを表すインターフェース。

パラメータ
client_id string 必須。Google Developers Console で確認および作成されたアプリのクライアント ID。
cookie_policy string ログイン Cookie を作成するドメインです。URI、single_host_originnone のいずれか。指定しない場合のデフォルトは single_host_origin です。
scope string リクエストするスコープ(スペース区切りの文字列)。fetch_basic_profile が false に設定されていない場合は省略可能です。
fetch_basic_profile boolean ユーザーのログイン時に基本的なプロフィール情報を取得する。リクエストされたスコープに「profile」、「email」、「openid」を追加します。指定しない場合は true になります。
hosted_domain string ログインが必要な G Suite ドメイン。これはクライアントによって変更される可能性があるため、返されたユーザーのホストされたドメイン プロパティを必ず確認してください。使用 GoogleUser.getHostedDomain()hdサーバーの ID トークン内のクレームを実行して、ドメインが想定どおりであることを確認します。
ux_mode string ログインフローに使用する UX モード。デフォルトでは、同意フローがポップアップで開きます。有効な値は popupredirect です。
redirect_uri string ux_mode='redirect' を使用する場合、このパラメータを使用すると、同意フローの最後で使用されるデフォルトの redirect_uri をオーバーライドできます。デフォルトの redirect_uri は、クエリ パラメータとハッシュ フラグメントを除去した現在の URL です。
plugin_name string 省略可。この値が設定されている場合、2022 年 7 月 29 日より前に作成された新しいクライアント ID では、古い Google プラットフォーム ライブラリを使用できます。 新しく作成されたクライアント ID では、デフォルトでプラットフォーム ライブラリの使用がブロックされるため、新しい Google Identity Services ライブラリを使用する必要があります。任意の値を選択できます。識別しやすいように、プロダクト名やプラグイン名などのわかりやすい名前をおすすめします。 例: plugin_name: 'YOUR_STRING_HERE'

認証

GoogleAuth はシングルトン クラスです。このクラスを使用することで、ユーザーは Google アカウントでログインし、ユーザーの現在のログイン ステータスを取得する、ユーザーの Google プロフィールから特定のデータを取得する、追加のスコープをリクエストする、 。

gapi.auth2.getAuthInstance()

GoogleAuth オブジェクトを返します。このメソッドを呼び出す前に、gapi.auth2.init()GoogleAuth オブジェクトを初期化する必要があります。

戻り値
gapi.auth2.GoogleAuth gapi.auth2.GoogleAuth オブジェクト。このオブジェクトを使用して、gapi.auth2.GoogleAuth のメソッドを呼び出します。

GoogleAuth.isSignedIn.get()

現在のユーザーが現在ログインしているかどうかを返します。

戻り値
ブール値 trueユーザーがログインしているかどうかfalseユーザーがログアウトしているか、またはGoogleAuthオブジェクトが初期化されていません。

GoogleAuth.isSignedIn.listen(listener)

現在のユーザーのログイン状態の変化をリッスンします。

引数
listener ブール値を受け取る関数です。listen() は、ユーザーがログインしたときの true をこの関数に渡します。ユーザーがログアウトしたときに false を渡します。

GoogleAuth.signIn()

gapi.auth2.init() に指定されたオプションを使用してユーザーをログインさせます。

戻り値
Promise ユーザーが認証とリクエスト スコープの付与に成功したときに GoogleUser インスタンスで処理される Promise。または、エラーが発生した場合は error プロパティを含むオブジェクトで拒否される(以下を参照)。をご覧ください)。

エラーコード

GoogleAuth.signIn(options)をご確認ください。

GoogleAuth.signIn(options

指定されたオプションを使用してユーザーのログインを行います。

引数
options 次のいずれかを行います。
  • ログイン パラメータの Key-Value ペアを含む gapi.auth2.SignInOptions オブジェクト。例:
    {
      scope: 'profile email'
    }
  • gapi.auth2.SigninOptionsBuilder のインスタンス。例:
    options = new gapi.auth2.SigninOptionsBuilder();
    options.setAppPackageName('com.example.app');
    options.setFetchBasicProfile(True);
    options.setPrompt('select_account');
    options.setScope('profile').setScope('email');
戻り値
Promise ユーザーが認証とリクエスト スコープの付与に成功したときに GoogleUser インスタンスで処理される Promise。または、エラーが発生した場合は error プロパティを含むオブジェクトで拒否される(以下を参照)。をご覧ください)。

エラーコード

popup_closed_by_user
ログインフローを完了する前にユーザーがポップアップを閉じた。
access_denied
ユーザーが、必要なスコープに対する権限を拒否しました。
immediate_failed
同意フローを求めることなくユーザーを自動的に選択することはできません。prompt: 'none' オプションを指定して signIn を使用すると、エラーが発生します。gapi.auth2.init は、前のセッションで以前にログインしていた場合、自動的にログインするため、このオプションを使用する必要はありません。

gapi.auth2.SignInOptions

GoogleAuth.signIn(options) メソッドのさまざまな構成パラメータを表すインターフェース。

パラメータ
prompt string 同意フローに対して特定のモードを適用します。省略可。
有効な値は次のとおりです。
  • consent
    承認サーバーは、アプリケーションに情報を返す前に、ユーザーに同意を求めるプロンプトを表示します。
  • select_account
    承認サーバーがユーザーに Google アカウントの選択を求めるプロンプトを表示します。これにより、複数のアカウントを持つユーザーは、現在のセッションで複数のアカウントを選択できます。
  • none非推奨
    承認サーバーに認証画面とユーザーの同意画面は表示されません。ユーザーがまだ認証されておらず、リクエストされたスコープにまだ同意していない場合は、エラーが返されます。
    以前にログインしている場合、gapi.auth2.init によってユーザーがアプリケーションに自動的にログインされるため、通常、signIn({prompt: 'none'}) の呼び出しは失敗します。
scope string gapi.auth2.init パラメータで定義されたスコープに対してリクエストするスコープ。スペース区切りの文字列で指定します。fetch_basic_profile が false に設定されていない場合は省略可能です。
ux_mode string ログインフローに使用する UX モード。デフォルトでは、同意フローがポップアップで開きます。有効な値は popupredirect です。
redirect_uri string ux_mode='redirect' を使用する場合、このパラメータを使用すると、同意フローの最後で使用されるデフォルトの redirect_uri をオーバーライドできます。デフォルトの redirect_uri は、クエリ パラメータとハッシュ フラグメントを取り除いた現在の URL です。

GoogleAuth.signOut()

現在のアカウントからログアウトします。

戻り値
Promise ユーザーがログアウトしたときに実行される Promise

GoogleAuth.disconnect()

ユーザーが付与したすべてのスコープを取り消します。

GoogleAuth.grantOfflineAccess(options

指定したスコープにオフラインでアクセスする権限をユーザーから取得します。

引数
options パラメータの Key-Value ペアを含む gapi.auth2.OfflineAccessOptions オブジェクト。例:
{
  scope: 'profile email'
}
戻り値
Promise ユーザーがリクエストされたスコープを付与するときに実行される Promise。認証コードを含むオブジェクトを Promise のフルフィルメント ハンドラに渡します。 例:
auth2.grantOfflineAccess().then(function(resp) {
  var auth_code = resp.code;
});

エラーコード

popup_closed_by_user
ユーザーが同意フローを完了する前にポップアップを閉じた。
access_denied
ユーザーが、必要なスコープに対する権限を拒否しました。
immediate_failed
同意フローを求めることなくユーザーを自動的に選択することはできません。prompt: 'none' オプションを指定して signIn を使用すると、エラーが発生します。gapi.auth2.init は、前のセッションで以前にログインしていた場合、自動的にログインするため、このオプションを使用する必要はありません。

gapi.auth2.OfflineAccessOptions

GoogleAuth.grantOfflineAccess(options) メソッドのさまざまな構成パラメータを表すインターフェース。

パラメータ
prompt string 同意フローに対して特定のモードを適用します。省略可。
有効な値は次のとおりです。
  • consent
    承認サーバーは、アプリケーションに情報を返す前に、ユーザーに同意を求めるプロンプトを表示します。
  • select_account
    承認サーバーがユーザーに Google アカウントの選択を求めるプロンプトを表示します。これにより、複数のアカウントを持つユーザーは、現在のセッションで複数のアカウントを選択できます。
scope string gapi.auth2.init パラメータで定義されたスコープに対してリクエストするスコープ。スペース区切りの文字列で指定します。fetch_basic_profile が false に設定されていない場合は省略可能です。

GoogleAuth.attachClickHandler(container, options, onsuccess, onfailure)

指定されたコンテナのクリック ハンドラにログインフローを追加します。

引数
container クリック ハンドラを追加する div 要素の ID または参照。
options パラメータの Key-Value ペアを含むオブジェクトです。GoogleAuth.signIn() をご覧ください。
onsuccess ログイン完了後に呼び出す関数。
onfailure ログインが失敗した場合に呼び出す関数。

ユーザー

GoogleUser オブジェクトは 1 つのユーザー アカウントを表します。 GoogleUser オブジェクトは通常、GoogleAuth.currentUser.get() を呼び出して取得します。

GoogleAuth.currentUser.get()

現在のユーザーを表す GoogleUser オブジェクトを返します。新しく初期化された GoogleAuth インスタンスでは、現在のユーザーが設定されていません。currentUser.listen() メソッドまたは GoogleAuth.then() を使用して、初期化された GoogleAuth インスタンスを取得します。

戻り値
GoogleUser 現在のユーザー

GoogleAuth.currentUser.listen(listener

currentUser の変更をリッスンする。

引数
listener GoogleUser パラメータを受け取る関数。 listen は、currentUser を変更するすべての変更の GoogleUser インスタンスを渡します。

GoogleUser.getId()

ユーザーの一意の ID 文字列を取得します。

戻り値
文字列 ユーザーの一意の ID

GoogleUser.isSignedIn()

ユーザーがログインしている場合は true を返します。

戻り値
ブール値 ユーザーがログインしている場合は true

GoogleUser.getHostedDomain()

ユーザーが G Suite アカウントでログインしている場合は、ユーザーの G Suite ドメインを取得します。

戻り値
文字列 ユーザーの G Suite ドメイン

GoogleUser.getGrantedScopes()

ユーザーが付与したスコープをスペース区切りの文字列として取得します。

戻り値
文字列 ユーザーが付与したスコープ

GoogleUser.getBasicProfile()

ユーザーの基本的なプロフィール情報を取得します。

戻り値
gapi.auth2.BasicProfile gapi.auth2.BasicProfile のプロパティは、次のメソッドを使用して取得できます。
  • BasicProfile.getId()
  • BasicProfile.getName()
  • BasicProfile.getGivenName()
  • BasicProfile.getFamilyName()
  • BasicProfile.getImageUrl()
  • BasicProfile.getEmail()

GoogleUser.getAuthResponse(includeAuthorizationData)

ユーザーの認証セッションからレスポンス オブジェクトを取得します。

引数
includeAuthorizationData 省略可: アクセス トークンとスコープを常に返すかどうかを指定するブール値。デフォルトでは、fetch_basic_profile が true(デフォルト値)であり、追加のスコープがリクエストされていない場合、アクセス トークンとリクエストされたスコープは返されません。
戻り値
gapi.auth2.AuthResponse gapi.auth2.AuthResponse オブジェクト。

GoogleUser.reloadAuthResponse()

アクセス トークンを強制的に更新し、新しい AuthResponse に対して Promise を返します。

戻り値
Promise OAuth トークンの再読み込み時に、再読み込みされた gapi.auth2.AuthResponse で処理される Promise

gapi.auth2.AuthResponse

GoogleUser.getAuthResponse(includeAuthorizationData) メソッドまたは GoogleUser.reloadAuthResponse() メソッドを呼び出すときに返されるレスポンス。

プロパティ
access_token string 付与されたアクセス トークン。
id_token string 付与された ID トークン。
scope string アクセス トークンで付与されるスコープ。
expires_in number アクセス トークンが期限切れになるまでの秒数。
first_issued_at number ユーザーが最初にリクエストしたスコープを付与したタイムスタンプ。
expires_at number アクセス トークンの有効期限を示すタイムスタンプ。

GoogleUser.hasGrantedScopes(scopes

指定したスコープをユーザーが付与した場合に true を返します。

引数
scopes スペース区切りのスコープの文字列。
戻り値
ブール値 スコープが付与されている場合は true

GoogleUser.grant(options

追加のスコープをユーザーにリクエストします。

パラメータとエラーコードのリストについては、GoogleAuth.signIn() をご覧ください。

GoogleUser.grantOfflineAccess(options

指定したスコープにオフラインでアクセスする権限をユーザーから取得します。

引数
options パラメータの Key-Value ペアを含む gapi.auth2.OfflineAccessOptions オブジェクト。例:
{
  scope: 'profile email'
}

GoogleUser.disconnect()

ユーザーがアプリケーションに許可したスコープをすべて取り消します。

UI 要素

gapi.signin2.render(id, options)

options オブジェクトで指定された設定を使用して、指定された ID の要素にログインボタンをレンダリングします。

引数
id ログインボタンをレンダリングする要素の ID。
options ボタンのレンダリングに使用する設定を含むオブジェクト。例:
{
  scope: 'email',
  width: 200,
  height: 50,
  longtitle: true,
  theme: 'dark',
  onsuccess: handleSuccess,
  onfailure: handleFailure
}
以下のオプションを指定できます。
パラメータ
スコープ ユーザーがログインしたときにリクエストするスコープ(デフォルト: profile)。
width ボタンの幅(ピクセル単位、デフォルト: 120)。
高さ ボタンの高さ(ピクセル単位)。36:
長いタイトル 「ログイン」ではなく「Google でログイン」などの長いラベルを表示する(デフォルト: false)。長いタイトルを使用する場合は、ボタンの幅をデフォルトから大きくする必要があります。
テーマ ボタンの色テーマ: light または dark(デフォルト: light
完了 ユーザーが正常にログインしたときに呼び出すコールバック関数。 この関数は 1 つの引数を取る必要があります。1 つは gapi.auth2.GoogleUser のインスタンスです(デフォルト: なし)。
障害発生 ログインが失敗した場合に呼び出すコールバック関数。この関数は引数を取らない(デフォルト: なし)。

詳細

gapi.auth2.permissions(params, callback)

OAuth 2.0 認証を 1 回実行します。使用されるパラメータに応じて、Google ログインフローのポップアップが開くか、ユーザーの操作を必要とせず、リクエストされたレスポンスがサイレントで読み込まれます。

この方法が役立つユースケースには、次のようなものがあります。

  • ユーザーが Google API エンドポイントをリクエストする必要があるのは、ユーザーのお気に入りの YouTube 動画を初回ログイン時に読み込む場合などです。
  • アプリケーションには独自のセッション管理インフラストラクチャがあり、バックエンドでユーザーを識別するために ID トークンを 1 回だけリクエストします。
  • 同じページ内では、複数のクライアント ID が使用されています。
引数
params 構成データの Key-Value ペアを含むオブジェクト。構成可能なさまざまなプロパティについては、gapi.auth2.AuthorizeConfig をご覧ください。例:
{
  client_id: 'CLIENT_ID.apps.googleusercontent.com',
  scope: 'email profile openid',
  response_type: 'id_token permission'
}
callback リクエストが正常に完了した後、gapi.auth2.AuthorizeResponse オブジェクトとともに呼び出される関数(成功または失敗)。

gapi.auth2.authorize({
  client_id: 'CLIENT_ID.apps.googleusercontent.com',
  scope: 'email profile openid',
  response_type: 'id_token permission'
}, function(response) {
  if (response.error) {
    // An error happened!
    return;
  }
  // The user authorized the application for the scopes requested.
  var accessToken = response.access_token;
  var idToken = response.id_token;
  // You can also now use gapi.client to perform authenticated requests.
});

エラーコード

idpiframe_initialization_failed
たとえば、サポートされていない環境が原因で、必要な iframe を Google から初期化できませんでした。details プロパティは、発生したエラーに関する詳細情報を提供します。
popup_closed_by_user
ログインフローを完了する前にユーザーがポップアップを閉じた。
access_denied
ユーザーが、必要なスコープに対する権限を拒否しました。
immediate_failed
同意フローを求めることなくユーザーを自動的に選択することはできません。prompt: 'none' オプションを指定して signIn を使用すると、エラーが発生します。

gapi.auth2.AuthorizeConfig

gapi.auth2.authorize メソッドのさまざまな構成パラメータを表すインターフェース。

プロパティ
client_id string 必須。Google Developers Console で確認および作成されたアプリのクライアント ID。
scope string 必須。リクエストするスコープ(スペース区切りの文字列)。
response_type string スペース区切りのレスポンス タイプのリスト。デフォルトは 'permission' です。使用できる値は次のとおりです。
  • id_token: ID トークンの取得
  • アクセス トークンを取得する permission(または token
  • code: 認証コードを取得する
prompt string 同意フローに対して特定のモードを適用します。使用できる値は次のとおりです。
  • consent
    承認サーバーは、アプリケーションに情報を返す前に、ユーザーに同意を求めるプロンプトを表示します。
  • select_account
    承認サーバーがユーザーに Google アカウントの選択を求めるプロンプトを表示します。これにより、複数のアカウントを持つユーザーは、現在のセッションで複数のアカウントを選択できます。
  • none
    認証サーバーに認証画面とユーザーの同意画面は表示されません。ユーザーがまだ認証されておらず、リクエストされたスコープにまだ同意していない場合は、エラーが返されます。
    code がレスポンス タイプとしてリクエストされた場合、返されるコードは refresh_token ではなく access_token とのみ交換できます。
cookie_policy string ログイン Cookie を作成するドメインです。URI、single_host_originnone のいずれか。指定しない場合のデフォルトは single_host_origin です。
hosted_domain string ログインが必要な G Suite ドメイン。これはクライアントによって変更される可能性があるため、返されたユーザーのホストされたドメイン プロパティを必ず確認してください。
login_hint string ログインフローで事前に選択するユーザーのメールアドレス(ユーザー ID)。prompt: "none" を使用しない限り、ユーザーが変更の影響を受ける可能性があります。
include_granted_scopes boolean ユーザーが以前にアプリに付与したすべてのスコープを含むアクセス トークンをリクエストするか、または現在の呼び出しでリクエストされたスコープのみをリクエストするか。デフォルトは true です。
plugin_name string 省略可。設定すると、2022 年 7 月 29 日より前に作成されたクライアント ID で Google プラットフォーム ライブラリを使用できます。デフォルトでは、新しく作成されたクライアント ID はプラットフォーム ライブラリの使用をブロックされ、代わりに新しい Google Identity Services ライブラリを使用する必要があります。任意の値を選択できます。識別しやすいように、プロダクト名やプラグイン名などのわかりやすい名前をおすすめします。 例: plugin_name: 'YOUR_STRING_HERE'

gapi.auth2.AuthorizeResponse

gapi.auth2.authorize メソッドのコールバックに返されたレスポンス。

プロパティ
access_token string 付与されたアクセス トークン。permission または tokenresponse_type で指定されている場合にのみ存在します。
id_token string 付与された ID トークン。id_tokenresponse_type で指定されている場合にのみ存在します。
code string 承認された認証コード。coderesponse_type で指定されている場合にのみ存在します。
scope string アクセス トークンで付与されるスコープ。permission または tokenresponse_type で指定されている場合にのみ存在します。
expires_in number アクセス トークンが期限切れになるまでの秒数。permission または tokenresponse_type で指定されている場合にのみ存在します。
first_issued_at number ユーザーが最初にリクエストされたスコープを付与したタイムスタンプ。permission または tokenresponse_type で指定されている場合にのみ存在します。
expires_at number アクセス トークンの有効期限を示すタイムスタンプです。permission または tokenresponse_type で指定されている場合にのみ存在します。
error string リクエストが失敗した場合、エラーコードが含まれます。
error_subtype string リクエストが失敗した場合は、返されるエラーコードに追加の情報が含まれる場合があります。