passport-twitter
Node.jsでTwitter認証を実装するにはpassportとpassport-twitterを使うのが楽で早いです。
使い方は下記ソースコードで順に説明していきます。基本的にこれをまるまるコピーしてもらって、consummerKey等を変更してもらえればすぐに使えます。
ソースコードはgithubにあげてます。
ソースコードの説明
フレームワークはExpress.jsで、viewにはejsを使用しています。ES6で実装しているのでES6の導入は下記リンクを参考にしてください。
import 'dotenv/config'; import config from 'config'; import session from 'express-session'; import passport from 'passport'; import express from 'express'; import ejs from 'ejs'; import TwitterStrategy from 'passport-twitter'; const app = express() // セッションへの保存と読み出し ・・・・① passport.serializeUser((user, callback) => { callback(null, user); }); passport.deserializeUser((obj, callback) => { callback(null, obj); }); // 認証の設定 ・・・・② passport.use(new TwitterStrategy({ consumerKey: config.get('twitter.consumerKey'), consumerSecret: config.get('twitter.consumerSecret'), callbackURL: config.get('twitter.callbackUrl') }, // 認証後のアクション (accessToken, refreshToken, profile, callback) => { process.nextTick(() => { console.log(profile); //必要に応じて変更 return callback(null, profile); }); })); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); // セッションの設定 ・・・・① app.use(session({ secret: 'reply-analyzer', resave: false, saveUninitialized: false })); app.use(passport.initialize()); app.use(passport.session()); // ・・・・① // 指定したpathで認証 ・・・・③ app.get('/auth/twitter', passport.authenticate('twitter')); // callback後の設定 ・・・・④ app.get('/auth/twitter/callback', passport.authenticate('twitter', {failureRedirect: '/login' }), (req, res) => { res.redirect('/'); }); app.get('/', function(req, res) { res.render('index', {title : 'タイトル'}); }); app.listen(8000)
①認証情報のセッションへの保存
Twitter認証後の認証情報はreq.session内に保存されます。しかし、上記実装ではメモリにし保持しないような実装になっているのでプロセスを再起動すると認証情報はなくなります。
再起動後も認証情報を維持する場合はconnect-memcachedやconnect-redisに保存するようにしてください。
②認証情報の設定
認証情報はここからアプリを作成してconsummerKeyとconsummerSecretを取得してください。各値を直接ソースコード常に書くのはセキュリティ上良くないので環境変数に設定するようにしてください。
Node.jsでの環境変数の設定方法はこちらを参照して下さい → Node.jsでの環境変数の設定方法
③認証用のURLを設定と④コールバックURL
認証として使用したいパスは指定することができます。スタンダードなパス指定は/auth/twitterとなるので特にこだわりがなければそのまま使用するのがいいかと思います。
③の認証用URLにアクセスするとTwitter側で認証を行って、②のcallbackUrlで指定したパスにリダイレクトされるのでそのパスで④を実装しなければいけません。
④にアクセスがあった後はユーザーごとに適切なページにリダイレクトさせてあげればいいかと思います。
まとめ
下記4項目を押さえておけばTwitter認証は簡単に行えます。是非この情報を参考にして実装してみてください。
- ①認証情報のセッションへの保存
- ②認証情報の設定
- ③認証用のURLを設定
- ④コールバックURL
関連記事
おすすめ書籍
基礎から応用までサンプルコードを使って解説しており、Node.jsが初めての人でも読める技術書となっています。上級者向けにはExpressフレームワークを使った実用的な開発手法の解説もありこれからアプリケーションを開発する人の参考になると思います。現状では書き方が古くなっていますが、Node.jsの初心者から上級者で学ぶことの多い書籍です。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す