NodemailerとGoogle PassportのOAuth戦略について


まず、Nodemailerを使用してメールを送信する方法を見てみましょう。Nodemailerは、Node.jsでメール送信を簡単に行うためのパッケージです。以下のコード例は、Gmailを使用してメールを送信する方法を示しています。

const nodemailer = require('nodemailer');
async function sendMail() {
  let transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
      user: '[email protected]',
      pass: 'your-password'
    }
  });
  let mailOptions = {
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Hello',
    text: 'This is a test email'
  };
  let info = await transporter.sendMail(mailOptions);
  console.log('Email sent: ' + info.response);
}
sendMail().catch(console.error);

次に、Google Passportを使用してOAuth戦略を実装する方法について説明します。Google Passportは、Node.jsでGoogleアカウントを使用した認証を簡単に実装するためのパッケージです。以下のコード例は、Googleアカウントを使用して認証するための戦略を実装する方法を示しています。

const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
passport.use(new GoogleStrategy({
  clientID: 'your-client-id',
  clientSecret: 'your-client-secret',
  callbackURL: 'http://localhost:3000/auth/google/callback'
}, (accessToken, refreshToken, profile, done) => {
  // 認証が成功した場合の処理
  // profileにはGoogleアカウントのプロフィール情報が含まれます
  // ここでユーザーのデータベースに情報を保存したり、セッションを管理したりすることができます
  return done(null, profile);
}));
// 認証リクエストのルートハンドラー
app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));
// 認証コールバックのルートハンドラー
app.get('/auth/google/callback', passport.authenticate('google', {
  successRedirect: '/dashboard',
  failureRedirect: '/login'
}));
// プロテクトされたルートのミドルウェア
function ensureAuthenticated(req, res, next) {
  if (req.isAuthenticated()) {
    return next();
  }
  res.redirect('/login');
}
// プロテクトされたルート
app.get('/dashboard', ensureAuthenticated, (req, res) => {
  res.render('dashboard');
});

以上がNodemailerとGoogle Passportを使用したOAuth戦略の実装例です。これにより、メール送信やGoogleアカウントを使用した認証を簡単に実現することができます。必要に応じて、詳細な設定やカスタマイズを行うことも可能です。