No se puede obtener / auth / twitter / callback mientras se usa twitter auth en nodejs

Estoy tratando de hacer twitter oauth en nodejs usando passportjs pero obteniendo un error

Cannot GET /auth/twitter/callback?oauth_token=alksdkalsjdsjd23232378skjdfjsdhf&oauth_verifier=234jjh23j4k234k23h4j2h342k34hj 

Aquí está mi código de nodo js

  var express = require('express') , passport = require('passport') , util = require('util') , GoogleStrategy = require('passport-google').Strategy , TwitterStrategy = require('passport-twitter').Strategy; passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(obj, done) { done(null, obj); }); passport.use(new TwitterStrategy({ consumerKey: 'xxxxxxxxxxxxxxxxxxxx', consumerSecret: 'xxxxxxxxxxxxxxxxxxxxxxxxxx', callbackURL: 'http://127.0.0.1:3000/auth/twitter/callback' }, function(token, tokenSecret, profile, done) { process.nextTick(function () { return done(null, profile); }); } )); var app = express(); // configure Express app.configure(function() { app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.logger()); app.use(express.cookieParser()); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.session({ secret: 'keyboard cat' })); // Initialize Passport! Also use passport.session() middleware, to support // persistent login sessions (recommended). app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); app.use(express.static(__dirname + '/../../public')); }); app.get('/', function(req, res){ res.render('index', { user: req.user }); }); app.get('/login', function(req, res){ res.sendfile('./views/auth.html'); }); app.get('/auth/twitter', passport.authenticate('twitter')); app.get('auth/twitter/callback', passport.authenticate('twitter', { successRedirect: '/success', failureRedirect: '/login' })); app.get('/success', function(req, res){ res.send("success logged in"); }); app.listen(process.env.PORT || 3000); 

EDITAR Falta / en la definición de ruta auth/twitter/callback .

También para los enrutadores /auth/twitter y auth/twitter/callback , passport.authenticate() como middleware hará la autenticación, y debe tener funciones de manejo de rutas.

Así que la definición de sus rutas debería verse algo así como:

 app.get('/auth/twitter', passport.authenticate('twitter'), function(req, res) {}); // empty route handler function, it won't be triggered app.get('/auth/twitter/callback', passport.authenticate('twitter', { successRedirect: '/success', failureRedirect: '/login' }), function(req, res) {}); // route handler 

No necesita la function(req, res) {} controlador de ruta vacía function(req, res) {} ; simplemente puede omitir el argumento y Express entenderá que no planea usar nunca el controlador