SailsJS和PassportJS Facebook授权

时间:2016-08-26 16:40:11

标签: node.js sails.js passport.js

我试图将Passport与SailsJS一起使用。 永远不会调用Emp = new Manager; Manager *Mng = (Manager*)Emp; Mng->Name = "Adam"; Mng->Designation = "BOSS"; 方法,也不会发送任何响应。 我在passport.authenticate('facebook')初始化了Passport和我的策略。

config/passports.js

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('/'); }) }); 时,我的所有请求都超时,护照从不调用我的身份验证方法。

我做错了什么?

1 个答案:

答案 0 :(得分: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);
},