LoginSignup
13
23

More than 5 years have passed since last update.

Node+Express上でTwitterOAuthするサンプル

Last updated at Posted at 2018-06-04

NodeJSExpressを使ったことがなかったのですが、
TwitterのOauth認証するには、Express上で利用できる
Passportモジュールpassport-twitterというセットで実装するのが一般的そうでしたので利用しました。

NodeJSの文化が不明ですが、Twitterで認証をする良いサンプルが見つからなかったので、
サンプルコードと共にメモをします。

細かい実装は以下にサンプルコードを置いてあるので省略します。
認証を利用するには以下の実装があれば良いようです。

// ...省略
var session = require('express-session');
var passport = require('passport');
var TwitterStrategy = require('passport-twitter').Strategy;

// ユーザ情報をセッションに保存するので初期化
app.use(session({
  secret: 'secret-key',
  resave: true,
  saveUninitialized: true
}));
// passport自体の初期化
app.use(passport.initialize());
app.use(passport.session());

// passport-twitterの設定
passport.use(new TwitterStrategy({
    consumerKey: '####',
    consumerSecret: '####',
    callbackURL: '..../auth/twitter/callback'
  },
  // 認証後の処理
  function(token, tokenSecret, profile, done) {
    return done(null, profile);
  }
));
// セッションに保存
passport.serializeUser(function(user, done) {
  done(null, user);
});
// セッションから復元 routerのreq.userから利用可能
passport.deserializeUser(function(user, done) {
  done(null, user);
});

// 各種ルーティング
app.use('/', indexRouter);
app.use('/success', usersRouter);
app.get('/auth/twitter', passport.authenticate('twitter'));
app.get('/auth/twitter/callback',
  passport.authenticate('twitter', { failureRedirect: '/?auth_failed' }),
  function (req, res) {
    res.redirect('/success');
  });

サンプルコード

参考URL

13
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
23