Мой код для Google OAuth с использованием Passport JS работал нормально год go, я сегодня кое-что протестировал, чтобы убедиться, что он сломан. Я думаю, что частью проблемы было удаление Google их API Google+. Я обновил свою библиотеку паспортов до "passport-google-oauth20": "^2.0.0"
, что, как я думал, решит проблему.
У меня возникла проблема, когда при запуске только моего сервера все работает и перенаправляет нормально. Но когда я запускаю свой прокси-сервер и с go до http://localhost:3000/auth/google
начинается процесс аутентификации, я вхожу, а затем перехожу на URL с длинной строкой токена (http://localhost:3000/auth/google/callback?code=lotsOfGobblygookTokens
), вместо того, чтобы перенаправлять обратно на домашнюю страницу. Я очень в растерянности.
Маршруты:
app.get(
"/auth/google",
passport.authenticate("google", {
scope: ["profile", "email"]
})
);
app.get(
"/auth/google/callback",
passport.authenticate("google"),
(req, res) => {
res.redirect("/");
}
);
Паспорт
passport.use(
new GoogleStrategy(
{
clientID: keys.googleClientID,
clientSecret: keys.googleClientSecret,
callbackURL: "/auth/google/callback",
proxy: true
},
async (accessToken, refreshToken, profile, done) => {
const existingUser = await User.findOne({ googleId: profile.id });
if (existingUser) {
done(null, existingUser);
} else {
//
const user = await new User({
googleId: profile.id,
name: profile.displayName
}).save();
done(null, user);
}
}
)
);