我正在开发一个在MERN Stack中构建的项目,并且正在使用护照进行身份验证。我最近在我的heroku应用程序和新部署的应用程序上添加了SSL证书,如果我尝试使用Google OAuth登录,则该页面将变为空白,并且需要执行ctrl + F5(硬刷新)以显示Google登录页面。回调URL也是如此。控制台中没有错误输出。您有什么建议或想法,可能是什么问题?
问题仅与https版本有关,而与我的localhost或http版本无关,因此似乎该问题特定于使用https
这是我在config / 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 GoogleStrategy(
{
clientID: keys.googleClientID,
clientSecret: keys.googleClientSecret,
callbackURL: "/auth/google/callback",
proxy: true
},
(accessToken, refreshToken, profile, done) => {
console.log("got to authenticate for google");
User.findOne({ googleId: profile.id }).then(existingUser => {
if (existingUser) {
console.log("exists");
done(null, existingUser);
} else {
new User({
username: profile.displayName,
firstName: profile.name.givenName,
lastName: profile.name.familyName,
email: profile.emails[0].value,
googleId: profile.id
})
.save()
.then(user => done(null, user));
}
});
}
)
);
这是我在authRoute.js中的代码
app.get(
'/auth/google/',
passport.authenticate(
'google',
{ scope: ['profile', 'email'] }
)
);
//passport middleware takes over at callback URL,
//then redirect the route to '/surveys'
app.get(
'/auth/google/callback/',
passport.authenticate('google'),
(req, res) => {
res.redirect('/forum');
}
);