2014-10-26 6 views
0

Когда я звоню passport.authenticate('facebook');, страница продолжает загружаться и не работает с таймаутом. Экран аутентификации на facebook никогда не появляется. Любая подсказка о том, где я совершил ошибку?Аутентификация подлинника на лицевой стороне Passport не отображает экран проверки подлинности Facebook

Ниже приведены мои фрагменты кода.

 var User = require('../models/user.js'), 
     passport = require('passport'), 
     FacebookStrategy = require('passport-facebook').Strategy; 
    passport.use(new FacebookStrategy({ 
      clientID: 'appId-XXX', 
      clientSecret: 'appSecret-xxx', 
      callbackURL: 'https://xxx/auth/facebook/callback' 
     }, 
     function(accessToken, refreshToken, profile, done) { 
      process.nextTick(function() { 
       var authID = 'facebook' + profile.id; 
       User.findOne({ 
        authId: authID 
       }, function(err, user) { 
        if (err) return done(err, null); 
        if (user) return done(null, user); 
        user = new User({ 
         authID: authID, 
         name: profile.displayName, 
         created: Date.now(), 
         role: 'customer' 
        }); 
        user.save(function(err) { 
         if (err) return done(err, null); 
         done(null, user); 
        }); 
       }); 
      }); 

     })); 

    app.use(passport.initialize()); 
    app.use(passport.session()); 

    app.get('/auth/facebook', function(req, res, next) { 
     console.log('Calling Facebook Authenticate'); 
     passport.authenticate('facebook'); 
    }); 

    app.get('/auth/facebok/callback', passport.authenticate('facebook', { 
     successRedirect: options.successRedirect, 
     failureRedirect: options.failureRedirect 
    })); 
+1

Изменение в 'passport.authenticate ('Facebook') (Req, Рез, рядом),' в '/ Идент/facebook' маршрут – laggingreflex

+0

@laggingreflex спасибо это работает. Пожалуйста, разместите его как ответ ... – Muthukumar

ответ

0

passport.authenticate возвращает middlware, который будет использоваться в качестве таковых:

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

Поскольку вы вызываете его вместо того, чтобы передать его непосредственно вы должны вызвать промежуточное возвращает передавая ему req, res, next ,

app.get('/auth/facebook', function(req, res, next) { 
    console.log('Calling Facebook Authenticate'); 
    passport.authenticate('facebook')(req, res, next); 
});