Passport

Twitter

ユーザーの Twitter アカウントを使ってログインするには、Twitter ストラテジーを使います。この認証には OAuth 1.0a を使っています。

The Twitter strategy allows users to sign in to a web application using their Twitter account. Internally, Twitter authentication works using OAuth 1.0a.

Twitter サポートは passport-twitter によって実装されています。

Support for Twitter is implemented by the passport-twitter module.

インストール

$ npm install passport-twitter

設定方法

Twitter 認証を使う前に Twitter Developers でアプリケーションを登録しておく必要があります。 登録が終わると、アプリケーションにコンシューマーキーとコンシューマーシークレットが発行されます。 アプリケーション側ではコールバックURLを実装しておいてください。 このURLではアクセスが許可された後にユーザーがリダイレクトされるページを示す必要があります。

In order to use Twitter authentication, you must first create an application at Twitter Developers. When created, an application is assigned a consumer key and consumer secret. Your application must also implement a callback URL, to which Twitter will redirect users after they have approved access for your application.
var passport = require('passport')
  , TwitterStrategy = require('passport-twitter').Strategy;

passport.use(new TwitterStrategy({
    consumerKey: TWITTER_CONSUMER_KEY,
    consumerSecret: TWITTER_CONSUMER_SECRET,
    callbackURL: "http://www.example.com/auth/twitter/callback"
  },
  function(token, tokenSecret, profile, done) {
    User.findOrCreate(..., function(err, user) {
      if (err) { return done(err); }
      done(null, user);
    });
  }
));

Twitter 認証のための検証用コールバック内では引数である tokentokenSecretprofile が利用できます。 profile は Twitter 上のユーザープロフィール情報です(詳細はユーザープロフィールを参照してください)。

The verify callback for Twitter authentication accepts token, tokenSecret, and profile arguments. profile will contain user profile information provided by Twitter; refer to User Profile for additional information.

ルーティング

Twitter 認証には2つのルーティングが必要です。 最初のルーティングでは OAuth トランザクションを開始し、ユーザーを Twitter へリダイレクトさせます。 次のルーティングでは Twitter サインインの後でユーザーをリダイレクトさせます。

// 認証のために Twitter へリダイレクトさせます。認証が完了すると、Twitter は
// ユーザーをアプリケーションへとリダイレクトして戻します。
//   /auth/twitter/callback
app.get('/auth/twitter', passport.authenticate('twitter'));

// ユーザーが許可すると、Twitter はユーザーをこの URL にリダイレクトさせます。
// この認証プロセスの最後に、アクセストークンの取得をおこないます。
// この取得が成功すればユーザーはログインしたことになります。取得に失敗したとき
// は、認証が失敗したとみなされます。
app.get('/auth/twitter/callback', 
  passport.authenticate('twitter', { successRedirect: '/',
                                     failureRedirect: '/login' }));

注意: このコールバックルーティングの URL は、ストラテジーの設定時に callbackURL オプションで指定されたものです。

Note that the URL of the callback route matches that of the callbackURL option specified when configuring the strategy.

リンク

Twitter を使った1-クリックサインインは、リンクやボタンによって実現できます。

A link or button can be placed on a web page, allowing one-click sign in with Twitter.
<a href="/auth/twitter">Twitter でサインイン</a>