27
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

passport-twitterを使ってみた

Posted at

はじめに

再来週に参加する勉強会でpassportについて話すつもりなので、記事をまとめてみました。passportを使えば簡単にgoogleやtwitterのアカウントからログインするということが実現できるのですが、論より証拠ということで実際に作ってみました。

そもそもpassportとは

passportとは他サービスからの認証を簡単に実現できるミドルウェアになります。ただし、前提としてExpressを使う必要があります。

passportは他サービスからの認証の基本的な枠組みを提供するだけなので、単体ではOAuth認証などはできません。passport-google-oauth2passport-twitterなどのように、自分が使いたい認証のライブラリを別に用意する必要があります。今回はtwitter認証がやりたいので、passport-twitterを使います。

早速使ってみる

https://github.com/jaredhanson/passport-twitter
https://github.com/jaredhanson/passport-twitter/blob/master/examples/signin/app.js

公式サイトを見れば、どう書けばいいのか大体分かるとおもいます。ここでは忘備録を兼ねて、自分が勉強したところを共有させて頂きます。

app.js
//npmモジュールのロード
var express = require('express');
var passport = require('passport');
var TwitterStrategy = require('passport-twitter');

//Expressの初期化
var app = express();
//Expressでpassportが使えるようにする
app.use(passport.session());

// passport-twitterの初期化
passport.use(new TwitterStrategy({
        consumerKey: TWITTER_CONSUMER_KEY,//TwitterのconsumerKey
        consumerSecret: TWITTER_CONSUMER_SECRET,//TwitterのconsumerSecret
        callbackURL: BASE_URL+'/auth/twitter/callback'//認証成功時の戻り先URL
    },
    function(token, tokenSecret, profile, done) {
        // 認証が完了したtwitterIdを検証する
        // 例えばtwitteridがDBの中に存在するかということを確認する
        // 検証結果によってdoneの書き方を以下のように指定する
        //     検証成功 : return done(null,profile);
        //     検証失敗 : return done(null,false);
        //     例外発生 : return done(null);
        return done(null,profile);
    }
));

//自作サービス中でtwitter認証を行うURLを設定する
app.get('/auth/twitter',
    passport.authenticate('twitter'));

//認証正常時の戻り先URLの設定をする
app.get('/auth/twitter/callback',
    passport.authenticate('twitter', {
        failureRedirect: '/' }),//認証失敗時のリダイレクト先を書く
    function(req, res) {
        // ここでは認証成功時のルーティング設定を書く
        // ちなみにreq.userでログインユーザの情報が取れる
        //     例) req.user.useridでユーザIDがとれます
        res.redirect('/');
    });

このように、とても簡単にtwitter認証が実現できます。実際に自作ゲームでpassport-twitterを使っているのはここになります。

また、手前味噌ではありますが、実際にpassport-twitterを使っているサービスはこれになります。

おわりに

2時間程度でtwitter認証を実現することが出来るようになりました。passportは少しとっつきにくいところがありますが、慣れるととても便利なツールなのでオススメです。

27
23
1

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
27
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?