Używanie PassportJS z Connect for NodeJS do uwierzytelniania użytkowników Facebooka

Próbuję zintegrować paszport z moim serwerem nodejs za pomocą połączenia, ale nie wydaje mi się, aby zrobił to poprawnie. Wszystkie przewodniki / przykłady używają expressJS, więc starałem się przeformatować kod, aby działał z moim kodem, ale nie mogę go uruchomić. Powiązane części są napisane poniżej. Czy ktoś ma jakieś rady na temat tego, co może być problemem? Passport.authenticate () nigdy nie wydaje się być wywoływany (przynajmniej komunikat console.log w wywołaniu zwrotnym uwierzytelniania na Facebooku nigdy nie jest drukowany). Obecnie nie zapisuję niczego do bazy danych, więc mam nadzieję, że ten problem będzie naprawdę prosty, czego mi brakuje.

Jedyne, co przychodzi mi do głowy, to potencjalne wywołanie zwrotne, które mam dla facebooka, czyli adres URL localhost (ponieważ wciąż rozwijam to lokalnie). Udało mi się uwierzytelnić na facebooku przy użyciu Everyauth (z czysto lokalnej instancji), ale przełączyłem się na paszportJS, ponieważ miałem tam różne problemy, które wydawały się dotyczyć paszportu.

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.');
}

Czy ktoś ma jakieś rady lub widzi usterkę w tym, co robię? Moje dwie inne alternatywy to przełączanie się z powrotem na everyauth i określanie, co tam się dzieje, lub przełączanie na ExpressJS, ale wolałbym nie używać żadnej z tych opcji.

Najlepiej,
Sami

questionAnswers(1)

yourAnswerToTheQuestion