Edited at

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