有人能帮我解决这个问题吗?回调永远不会结束。我关注了passport facebook指南和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
"express":"3.2.1",
"passport":"0.1.16",
"passport-facebook":"0.1.5",
"paypal-ipn":"1.0.1",
"ejs":"0.8.3",
"sequelize":"1.7.0-alpha1",
"winston":"0.7.1",
"mysql":"2.0.0-alpha8“
发布于 2013-05-04 15:12:59
像findOrCreate()这样的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);
});或者,您可以使用complete或done作为快捷方式(它们使用与策略的done方法相同的err, result签名,因此您可以直接传入):
User.findOrCreate(
{ facebookId : profile.id },
{ name : profile.displayName}
).complete(done);
// or
User.findOrCreate(
{ facebookId : profile.id },
{ name : profile.displayName}
).done(done);在您的例子中,您提供给findOrCreate()的回调永远不会被调用,策略回调的done()函数也永远不会被调用。
https://stackoverflow.com/questions/16370136
复制相似问题