2013-05-04 2 views
3

누구든지이 문제를 해결할 수 있습니까? 콜백은 끝나지 않습니다. 나는 여권 facebook 가이드와 여권 - facebook 가이드를 따라 갔고 양쪽이 아니라 모두 같은 문제를 가지고있다.Node.js 및 passport-facebook 콜백이 끝나지 않습니다

passport.use(new FacebookStrategy({ 
    clientID: FACEBOOK_APP_ID, 
    clientSecret: FACEBOOK_APP_SECRET, 
    callbackURL: "http://localhost:3000/auth/facebook/callback" 
    }, 
    function(accessToken, refreshToken, profile, done) { 
    User.findOrCreate({ facebookId: profile.id },{name:profile.displayName}, 
    function (err, user) { 
     return done(err, user); 
    }); 
    } 
)); 

app.get('/auth/facebook', passport.authenticate('facebook')); 

app.get('/auth/facebook/callback', 
    passport.authenticate('facebook', { failureRedirect: '/error', 
             successRedirect: '/success' })); 

구성 및 종속성

Node.js를 버전 0.10

"표현": "3.2.1",

"여권"0.1 " 다음은 내 코드입니다. 16 ",

"여권 페이스 북 ":"0.1.5 ",

"P aypal-IPN ":"1.0.1 ",

"EJS ":"0.8.3 ",

"sequelize ":"1.7.0 - 알파 1 ",

"윈스턴 "" 0.7.1 MySQL은 "

" ":" findOrCreate() 같은 2.0.0-alpha8 "

답변

2

Sequelize 방법은 결과를 처리하는 콜백 함수를 허용하지만 반환하지 않는 a promise-like object :

User.findOrCreate(
    { facebookId : profile.id }, 
    { name  : profile.displayName} 
).success(function(user) { // called when findOrCreate was successful 
    done(null, user); 
}).error(function(err) { // called when findOrCreate failed 
    done(err); 
}); 

다른 방법으로는 (그들은 전략의 done 방법과 동일 err, result 서명을 사용, 그래서 당신은 직접 그에 전달할 수) 바로 가기로 complete 또는 done를 사용할 수 있습니다

User.findOrCreate(
    { facebookId : profile.id }, 
    { name  : profile.displayName} 
).complete(done); 
// or 
User.findOrCreate(
    { facebookId : profile.id }, 
    { name  : profile.displayName} 
).done(done); 

를 귀하의 경우, 콜백에서 당신은 findOrCreate()이 결코 호출되지 않고 done() 전략 콜백 함수가 호출되지 않습니다.

+0

감사합니다. robertklep! – lmnogueira

관련 문제