Node.jsとPassportを使用したGoogle One Tapログインの実装方法


まず、以下の手順に従って、環境のセットアップを行います。

  1. Node.jsのインストール: Node.jsを公式ウェブサイトからダウンロードしてインストールします。

  2. プロジェクトの初期化: 適切なディレクトリで新しいNode.jsプロジェクトを初期化します。ターミナルで以下のコマンドを実行します。

mkdir myproject
cd myproject
npm init -y
  1. 必要なパッケージのインストール: Passportとその依存関係をインストールします。ターミナルで以下のコマンドを実行します。
npm install passport passport-google-oauth

次に、Googleの開発者コンソールでアプリケーションを作成し、認証情報を取得します。以下の手順に従って進めてください。

  1. Googleの開発者コンソールにアクセスし、新しいプロジェクトを作成します。

  2. 「認証情報」セクションに移動し、「OAuthクライアントID」を作成します。

  3. 「承認済みのJavaScript生成元」と「承認済みのリダイレクトURI」に、アプリケーションのURLを追加します。

これで準備が整いました。次に、実際のコード例を見ていきましょう。

const express = require('express');
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
const app = express();
// Passportのセットアップ
app.use(passport.initialize());
app.use(passport.session());
// Googleの認証設定
passport.use(new GoogleStrategy({
    clientID: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
    callbackURL: '/auth/google/callback'
  },
  (accessToken, refreshToken, profile, done) => {
    // 認証成功時の処理を記述します
    // ユーザープロフィールなどの情報を利用できます
    return done(null, profile);
  }
));
// ユーザーシリアライズとデシリアライズ
passport.serializeUser((user, done) => {
  done(null, user);
});
passport.deserializeUser((user, done) => {
  done(null, user);
});
// ログインルート
app.get('/auth/google',
  passport.authenticate('google', { scope: ['profile'] })
);
// コールバックルート
app.get('/auth/google/callback',
  passport.authenticate('google', { failureRedirect: '/login' }),
  (req, res) => {
    // ログイン成功時の処理を記述します
    res.redirect('/dashboard'); // ダッシュボードページにリダイレクト
  }
);
// サーバーの起動
app.listen(3000, () => {
  console.log('Server started on port 3000');
});

このコードでは、Google Strategyを使用してPassportを設定し、Google One Tapログインを実装しています。YOUR_CLIENT_IDYOUR_CLIENT_SECRETの部分には、Googleの開発者コンソールから取得したクライアントIDとクライアントシークレットを設定してください。