Google ログインをウェブアプリに統合する

Google ログインは OAuth 2.0 フローとトークンのライフサイクルを管理して、Google API との統合を簡素化します。ユーザーはいつでもアプリケーションへのアクセス権を取り消すことができます。

このドキュメントでは、基本的な Google ログインの統合を行う方法について説明します。

承認認証情報を作成する

OAuth 2.0 を使用して Google API にアクセスするアプリケーションには、Google の OAuth 2.0 サーバーに対してアプリケーションを識別するための認証情報が必要です。以下では、プロジェクトの認証情報を作成する方法について説明します。これにより、アプリケーションは認証情報を使用して、そのプロジェクトで有効にした API にアクセスできるようになります。

  1. Go to the Credentials page.
  2. [認証情報を作成] > [OAuth クライアント ID] をクリックします。
  3. アプリケーションの種類として [ウェブ アプリケーション] を選択します。
  4. OAuth 2.0 クライアントに名前を付けて [作成] をクリックします。

構成が完了したら、作成されたクライアント ID をメモします。次のステップを完了するには、クライアント ID が必要です。(クライアント シークレットも作成されますが、サーバーサイドのオペレーションでのみ必要です)。

Google プラットフォーム ライブラリを読み込む

Google ログインを統合するウェブページには、Google プラットフォーム ライブラリを組み込む必要があります。

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

アプリのクライアント ID を指定する

Google Developers Console でアプリ用に作成したクライアント ID を、google-signin-client_id メタ要素で指定します。

<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">

Google ログインボタンを追加する

Google ログインボタンをサイトに追加する最も簡単な方法は、自動的にレンダリングされるログインボタンを使用することです。わずか数行のコードで、ユーザーのログイン状態やリクエストしたスコープに適したテキスト、ロゴ、色を使用するように自動的に構成されるボタンを追加できます。

デフォルトの設定を使用する Google ログインボタンを作成するには、g-signin2 クラスの div 要素をログインページに追加します。

<div class="g-signin2" data-onsuccess="onSignIn"></div>

プロフィール情報を取得する

デフォルトのスコープを使用して Google でユーザーをログインさせると、ユーザーの Google ID、名前、プロフィールの URL、メールアドレスにアクセスできます。

ユーザーのプロフィール情報を取得するには、getBasicProfile() メソッドを使用します。

function onSignIn(googleUser) {
  var profile = googleUser.getBasicProfile();
  console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
  console.log('Name: ' + profile.getName());
  console.log('Image URL: ' + profile.getImageUrl());
  console.log('Email: ' + profile.getEmail()); // This is null if the 'email' scope is not present.
}

ユーザーのログアウト

ログアウト ボタンまたはサイトへのリンクを追加することで、ユーザーが Google からログアウトせずにアプリからログアウトできるようにします。ログアウト リンクを作成するには、GoogleAuth.signOut() メソッドを呼び出す関数をリンクの onclick イベントに接続します。

<a href="#" onclick="signOut();">Sign out</a>
<script>
  function signOut() {
    var auth2 = gapi.auth2.getAuthInstance();
    auth2.signOut().then(function () {
      console.log('User signed out.');
    });
  }
</script>