обратный вызов для Google oauth не перенаправляет - PullRequest
0 голосов
/ 24 апреля 2019

Мой Google oauth работает правильно, данные сохранены, и все console.logs отвечают везде, но после сериализации моя веб-страница не перенаправляет на приложение реагирования

проблема в обратном вызове

Router.get(
  "/callback",
  passport.authenticate("google"),
  (req, res, err) => {
    if (err.name === "TokenError") {
      res.redirect("/"); // redirect them back to the login page
    }
    user = req.user;
    console.log("[googleRoutes.js] callback : ", user);
    res.redirect("localhost:3000");//problem lies here
  }
);

и другой код:

const passport = require("passport"),
  GoogleStrategy = require("passport-google-oauth20").Strategy,
  keys = require("../key"),
  User = require("../User"),
  UserSession = require("../UserSession");

passport.serializeUser((user, done) => {
  console.log("[Serializing Google] :", user.id);
  done(null, user.id);
});
passport.deserializeUser((user, done) => {
  User.findById(user.id).then(user => {
    console.log("[Deserializing Google] :", user.id);
    done(null, user);
  });
});

passport.use(
  new GoogleStrategy(
    {
      clientID: keys.googleClientID,
      clientSecret: keys.googleClientSecret,
      callbackURL: "/auth/google/callback"
    },
    async (accessToken, refreshToken, profile, done) => {
      console.log("profile :", profile.id);
      const existingUser = await User.findOne({ googleId: profile.id });
      if (existingUser) {
        //we already have a record wih the given profile ID
        console.log("user existing google");
        done(null, existingUser);
      } else {
        //we don't have a user record with this ID, make a new record
        const user = await new User();
        user.username = profile.displayName;
        user.googleId = profile.id;
        console.log("google id is saved");
        user.save().then(theuser => {
          done(null, theuser);
        });
      }
    }
  )
);
...