まず、以下の手順に従って、環境のセットアップを行います。
-
Node.jsのインストール: Node.jsを公式ウェブサイトからダウンロードしてインストールします。
-
プロジェクトの初期化: 適切なディレクトリで新しいNode.jsプロジェクトを初期化します。ターミナルで以下のコマンドを実行します。
mkdir myproject
cd myproject
npm init -y
- 必要なパッケージのインストール: Passportとその依存関係をインストールします。ターミナルで以下のコマンドを実行します。
npm install passport passport-google-oauth
次に、Googleの開発者コンソールでアプリケーションを作成し、認証情報を取得します。以下の手順に従って進めてください。
-
Googleの開発者コンソールにアクセスし、新しいプロジェクトを作成します。
-
「認証情報」セクションに移動し、「OAuthクライアントID」を作成します。
-
「承認済みの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_ID
とYOUR_CLIENT_SECRET
の部分には、Googleの開発者コンソールから取得したクライアントIDとクライアントシークレットを設定してください。