2016-08-26 5 views
0

Я пытаюсь использовать паспорт с SailsJS. Метод passport.authenticate('facebook') никогда не вызывается и никакой ответ не отправляется. Я инициализирую паспорт и свои стратегии в config/passports.js.SailsJS и PassportJS Facebook auth

config/passport.js:

const passport = require('passport'); 
const FacebookStrategy = require('passport-facebook').Strategy; 

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

passport.deserializeUser(function (id, done) { 
    User.findOne({id: id}, function (err, user) { 
    done(err, user); 
    }); 
}); 

passport.use(new FacebookStrategy({ 
    /* IDS */ 
}, (token, refreshToken, profile, next) => { 
    /* logic here */ 
    }) 
})); 

инициализирую паспорт и сериализации методы.

Я выставиться passport.init() и passport.session() промежуточное программное в файле config/http.js следующие следующем порядке:

'startRequestTimer', 
'cookieParser', 
'session', 
'passportInit', 
'passportSession', 

Маршрут /auth/facebook использует следующий контроллер:

passport.authenticate('facebook', {scope: ['email', 'user_about_me']}, 
     (err, user) => { 
     req.logIn(user, (err) => { 
      if (err) return res.send(err); 
      return res.redirect('/'); 
     }) 
     }); 

Все мои запросы времени, когда я называю /auth/facebook, Паспорт никогда не вызывает мой метод проверки подлинности.

Что я сделал не так?

ответ

0

passport.authenticate возвращает функцию, которую вы должны позвонить, чтобы работать.

Вот как я использую его:

'facebook': function (req, res, next) { 
    passport.authenticate('facebook', {scope: ['email', 'user_about_me']}, function (err, user) { 
    req.logIn(user, function (err) { 
     if(err) { 
     res.redirect('user/login'); 
     } else { 
     res.session.user = user; 
     res.redirect('/'); 
     } 
    }); 
    })(req, res, next); 
}, 
Смежные вопросы