2014-10-20 52 views
1

这里是我的愚蠢模块的NodeJS。当passport.authenticate('facebook')被调用时,它只会冻结。护照的Facebook不是做重定向

我用快递4.2.0。有任何想法吗?

验证呼叫不会阻止。我想如何从函数中返回?

所有我在app.js.看到通话authenticate的例子我不想在app.js中配置身份验证策略。

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

var passport = require('passport') 
var facebookStrategy = require('passport-facebook').Strategy; 

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

    } 
)); 

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


module.exports = router; 

回答

3

必须通话done()facebookStrategy回调函数。不这样做,事情挂起,因为的done()调用是系统知道如何着手。即使你只是有存根代码在那里,现在,你至少需要done()保持控制流程序正确。

其次,passport.authenticate回报中间件功能,这样你就不会直接调用它,你通过它来表达:

router.get('/', passport.authenticate('facebook')); //don't wrap here 

第二部分是不正确有关上述router.get回调是它从不响应,这也是一种使表达挂起的方式。

一旦这些都是固定的,你需要多一个途径来处理Facebook的回调:

var options = { 
    successRedirect: '/home', 
    failureRedirect: '/bummer-dude' 
}; 
router.get('/auth/facebook/callback', passport.authenticate('facebook', options));