Uso de PassportJS con Connect for NodeJS para autenticar usuarios de Facebook

Estoy tratando de integrar el pasaporte en mi servidor nodejs usando connect, pero parece que no puedo hacerlo correctamente. Todas las guías / ejemplos usan ExpressJS, así que hice mi mejor esfuerzo para reformatear el código para que funcione con mi código, pero parece que no puedo hacer que funcione. Las partes relacionadas están escritas a continuación. ¿Alguien tiene algún consejo sobre cuál podría ser el problema? Parece que nunca se llama a passport.authenticate () (al menos el mensaje de console.log dentro de la devolución de llamada de autenticación de Facebook nunca se imprime). Actualmente no estoy guardando nada en una base de datos, por lo que espero que el problema sea algo realmente simple que solo falto.

Lo único que me viene a la mente es la posible devolución de llamada que tengo para Facebook, que es una URL de localhost (ya que todavía estoy desarrollando esto a nivel local). Pude autenticarme con Facebook simplemente usando everyauth (desde una instancia puramente local), pero cambié a pasaporte JS ya que tenía diferentes problemas que el pasaporte JS parecía abordar.

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

passport.serializeUser(function(user,done){
    done(null, user);
});
passport.deserializeUser(function(obj,done){
    done(null,obj);
});

passport.use(new fpass({
        clientID:'facebook app id',
        clientSecret:'facebook app secret',
        callbackURL:'http://localhost:3000/auth/facebook/callback'
    },
    function(accessToken, refreshToken, fbUserData, done){
        console.log('got here');
        return done(null,fbUserData);
    }
));



    function checkLoggedIn(req, res, next){
        console.log("req.user: " + req.user);
        if(req.user)
            next();
        else{
            console.log('\nNot LOGGED IN\n');
            if(req.socket.remoteAddress || req.socket.socket.remoteAddress == '127.0.0.1'){
                var folder,contentType;
                console.log('req url = '+req.url);
                if(req.url == '/'){
                    folder = __dirname + '/landingPage.html';
                    contentType = 'text/html';
                }
                else if(req.url == '/auth/facebook'){
                    passport.authenticate('facebook');
                    return;
                }
                else if(req.url == '/auth/facebook/callback'){
                    passport.authenticate('facebook', {failureRedirect: '/failbook', successRedirect:'/'});
                    return;
                }
                if(folder){
                    console.log('got to folder part\n\n');
                    fs.readFile(folder, function(error, content){
                      if(error){
                        res.writeHead(500);
                        res.end();
                      }
                      else{
                        res.writeHead(200, {'Content-Type': contentType});
                        res.end(content);
                      }
                    });
                  }
                    else{ res.writeHead(500); res.end();}
            }
            else {res.writeHead(500); res.end();}
        }
    }

  connect.createServer(
    connect.cookieParser(),
    connect.bodyParser(),
    connect.session({secret:'wakajakamadaka'}),
    passport.initialize(),
    passport.session(),
    checkLoggedIn).listen(8888);
  console.log('Server has started.');
}

¿Alguien tiene algún consejo o ve un error en lo que estoy haciendo? Mis otras dos alternativas son volver a Everyauth y averiguar qué está pasando allí, o cambiar a ExpressJS, pero prefiero no ir con ninguna de esas opciones.

Mejor,
Sami

Respuestas a la pregunta(1)

Su respuesta a la pregunta