使用 facebook 和 Twitter 策略的护照身份验证

Passport authentication using both facebook and Twitter strategies

我已经按照下面的方式配置了 passport 以使用 passport-facebook 来使用 facebook 身份验证策略,并且它工作正常。但是,现在我想让 Twitter 用户也能够使用 passport-twitter 进行身份验证。我如何配置 passport 以使用这两种策略?

var passport = require('passport');
var Strategy = require('passport-facebook').Strategy;

passport.use(new Strategy({
    clientID: process.env.FACEBOOK_CLIENT_ID,
    clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
    callbackURL: '/return'
  },
  function(accessToken, refreshToken, profile, cb) {

  }));

尝试

 var passport = require('passport')
      , ForceDotComStrategy = require('./lib/passport-forcedotcom').Strategy
      , TwitterStrategy = require('passport-twitter').Strategy
      , FacebookStrategy = require('passport-facebook').Strategy;

passport.use(new TwitterStrategy({
  consumerKey: '[TWITTERID]',
  consumerSecret: '[TWITTERSECRET]',
  callbackURL: 'return'
  }, function(token, tokenSecret, profile, done) {
    process.nextTick(function () {
      return done(null, profile);
    });
  }));

passport.use(new FacebookStrategy({
    clientID: '[FBID]',
    clientSecret: '[FBSECRET]',
    callbackURL: 'return'
  },
  function(accessToken, refreshToken, profile, done) {
    // asynchronous verification, for effect...
    process.nextTick(function () {
             
      return done(null, profile);
    });
  }
));



app.get('/twitter-login', passport.authenticate('twitter'));

app.get('/twitter-token', passport.authenticate('twitter', { failureRedirect: '/error' }),
  function(req, res){
    res.send('Logged In.');
  });



app.get('/facebook-login', passport.authenticate('facebook'));

app.get('/facebook-token', passport.authenticate('facebook', { failureRedirect: '/error' }),
  function(req, res){
    res.send('Logged In.');
  });