我正在用Facebook登录创建一个简单的应用程序。它在localhost中可以正常工作。但是,在部署到Heroku之后,“登录”按钮仅刷新页面,浏览器停留在https://voting-app-28.herokuapp.com/auth/facebook
而不进行重定向。我已经尝试了所有方法,并将URL也添加到了Facebook上的有效OAuth重定向URI中。控制台中没有错误。
我的passport.js
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
User.findById(id).then(user => done(null, user));
});
passport.use(
new FacebookStrategy(
{
clientID: keys.facebookClientID,
clientSecret: keys.facebookClientSecret,
callbackURL: '/auth/facebook/callback',
profileFields: ['id', 'name'],
proxy: true
},
(accessToken, refreshToken, profile, done) => {
User.findOne({ facebookId: profile.id }).then(user => {
if (user) {
return done(null, user);
} else {
new User({ facebookId: profile.id })
.save()
.then(user => done(null, user));
}
});
}
)
);
我的authRoutes.js
app.get('/auth/facebook', passport.authenticate('facebook'));
app.get(
'/auth/facebook/callback',
passport.authenticate('facebook'),
(req, res) => {
res.redirect('/');
}
);
这是我的Github repo和Heroku app,所以您可以明白我的意思。
请帮助并谢谢您!
答案 0 :(得分:2)
我有同样的问题。经过多次Google搜索后,我发现Facebook仅允许来自HTTPS的请求。即使我的Heroku域是HTTPS,它也没有ssl证书。我升级为爱好测功机,并在Heroku的设置中应用了ssl证书,现在可以使用了。