Google OAuth的回调未重定向

时间:2019-04-24 17:37:27

标签: node.js reactjs google-oauth

我的Google oauth正常工作,数据已保存并且所有console.logs都在任何地方答复,但是序列化我的网页后没有重定向到React应用程序会出现一个问题

问题在回调中

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);
        });
      }
    }
  )
);

0 个答案:

没有答案