【问题标题】:Page callback not load with NodeJS Express Passport-facebook页面回调未使用 NodeJS Express Passport-facebook 加载
【发布时间】:2015-11-19 16:52:07
【问题描述】:

我有一个应用程序节点 js,使用 express 通过 facebook 进行身份验证,但 url /auth/facebook/callback 没有加载。

依赖版本: 快递:4.13.3 护照 0.3.0 Passport-facebook 2.0.0

app.js

var app = express();


app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');


app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));


passport.use(new FacebookStrategy({
  clientID: '806175282757975',
  clientSecret: '*************',
  callbackURL: "http://localhost:3000/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {

  process.nextTick(function () {

        return done(null, profile);
      });
    }
  ));

app.use(function(req,res,next){
    req.passport = passport;
    next();
});

app.use('/', routes);
app.use('/users', users);

module.exports = app;

路由/index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.get('/auth/facebook', function(req, res, next){
    req.passport.authenticate('facebook')(req, res, next);
});

router.get('/auth/facebook/callback', function(req, res, next){
    req.passport.authenticate('facebook', { successRedirect: '/',
                                  failureRedirect: '/login' });
});

module.exports = router;

控制台没有返回错误。

【问题讨论】:

    标签: javascript node.js facebook express passport.js


    【解决方案1】:

    /auth/facebook/callback route 的 routes/index.js 中,您忘记了使用 req、res、next 参数调用 authenticate 方法。这就是您的应用程序被卡住的原因(从未调用过“下一个”回调)。

    var express = require('express');
    var router = express.Router();
    
    /* GET home page. */
    router.get('/', function(req, res, next) {
      res.render('index', { title: 'Express' });
    });
    
    router.get('/auth/facebook', function(req, res, next){
        req.passport.authenticate('facebook')(req, res, next);
    });
    
    router.get('/auth/facebook/callback', function(req, res, next){
        req.passport.authenticate('facebook', {
            successRedirect: '/',
            failureRedirect: '/login' }
        )(req, res, next); // missing function call
    });
    
    module.exports = router;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-10
      • 2015-03-24
      • 1970-01-01
      • 2013-12-12
      • 2018-07-06
      • 2013-10-02
      • 2019-08-13
      • 1970-01-01
      相关资源
      最近更新 更多