2014-10-20 50 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));