Паспорт JS работает на сервере, но не перенаправляется при работе на клиенте - PullRequest
0 голосов
/ 13 января 2020

Мой код для 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);
      }
    }
  )
);
...