2014-10-20 1 views
1

여기 내 어리석은 nodej 모듈입니다. passport.authenticate('facebook')이 호출되면 그냥 멈 춥니 다.여권 - 페이스 북은 리다이렉트를하지 않습니다

저는 Express 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

당신 해야 당신의 facebookStrategy 콜백 함수에서 호출 done(). 그것 없이는, done()의 호출은 시스템이 진행하는 방법을 알고 있기 때문에 상황이 멈춘다. 지금 당장 스텁 코드를 가지고 있더라도 제어 흐름을 올바르게 진행하려면 최소한 done()이 필요합니다. 당신이 직접 호출하지 않도록

둘째, passport.authenticate반환 미들웨어 기능, 당신은 표현에게 전달 :

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

당신의 위 router.get 콜백에 대한 잘못된 두 번째 부분은이 응답하지 이것은 또한 표현을 끊는 방법이기도합니다.

사람들이 고정되면, 당신은 페이스 북의 콜백 처리하기 위해 또 하나 개의 경로가 필요합니다

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