gpt4 book ai didi

Node.js 和 passport-facebook 回调永远不会结束

转载 作者:搜寻专家 更新时间:2023-10-31 23:55:28 25 4
gpt4 key购买 nike

谁能帮我解决这个问题?回调永远不会结束。我遵循了 passport facebook guide 和 passport-facebook guide,但都遇到了同样的问题。这是我的代码:

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",

"Passport ": "0.1.16",

“Passport Facebook ”:“0.1.5”,

"paypal-ipn": "1.0.1",

"ejs": "0.8.3",

“续集”:“1.7.0-alpha1”,

“winston ”:“0.7.1”,

"mysql": "2.0.0-alpha8"

最佳答案

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);
});

或者,您可以使用 completedone 作为快捷方式(它们使用与 Strategy 的 相同的 err, result 签名done 方法,所以你可以直接传入):

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

在您的情况下,您提供给 findOrCreate() 的回调永远不会被调用,Strategy 回调的 done() 函数也永远不会被调用。

关于Node.js 和 passport-facebook 回调永远不会结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16370136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com