【问题标题】:SailsJS and PassportJS Facebook authSailsJS 和 PassportJS Facebook 身份验证
【发布时间】:2017-01-03 09:41:33
【问题描述】:

我正在尝试将 Passport 与 SailsJS 一起使用。 passport.authenticate('facebook') 方法永远不会被调用,也不会发送任何响应。 我在 config/passports.js 中初始化 Passport 和我的策略。

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 */
  })
}));

我初始化护照和序列化方法。

我按照以下顺序在config/http.js 文件中设置了passport.init()passport.session() 中间件:

'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 时,我的所有请求都超时,passport 从不调用我的身份验证方法。

我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    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);
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-24
      • 2015-09-20
      • 1970-01-01
      • 2015-08-10
      • 2014-04-06
      • 2019-05-22
      • 2011-08-17
      • 1970-01-01
      相关资源
      最近更新 更多