Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

c_tyo
WebDeveloper at http://ctyo.hatenablog.com/
https://ctyo.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away