回调网址没有使用谷歌护照策略oAuth2执行

时间:2017-12-16 21:21:28

标签: javascript node.js express passport.js passport-google-oauth2

我已经尝试过几乎所有东西(读取线程,在谷歌搜索)但我不明白为什么我的回调网址没有被执行。经过调试,我发现请求被发送到谷歌服务器,我回来了但是回调没有被执行。当我导航到http:\ localhost:3000 \ auth \ google时,页面就会挂起。我当前正在使用本地主机服务器。 虽然数据在mongodb上持久存在,这意味着路由正在工作但不是回调。

以下是我的路线和当地策略。

AuthRoutes.js

const passport = require("passport");
module.exports = app => {
  app.get("/auth/google/", (req, res) => {
    passport.authenticate("google", {

      scope: ["profile", "email"] 
    });
  });

  app.get(
    "/auth/google/callback",
    passport.authenticate("google", {
      successRedirect: "/profile",
      failureRedirect: "/"
    })
  );

  app.get("/api/current_user", (req, res) => {
    res.send(req.user);

  });

  app.get("/api/logout", (req, res) => {
    req.logout();
    res.redirect("/completed"); 
  });
};

passport.js

const passport = require("passport");
const GoogleStrategy = require("passport-google-oauth20").Strategy;
const keys = require("../config/keys");
const mongoose = require("mongoose");

const User = mongoose.model("users");

passport.serializeUser((user, done) => {
  done(null, user.id); 
});
passport.deserializeUser((id, done) => {
  User.findById(id).then(userModel => {
    done(null, userModel);
  });
});

passport.use(
  new GoogleStrategy(
    {
      clientID: keys.GOOGLE_CLIENT_ID,
      clientSecret: keys.GOOGLE_CLIENT_SECRET,
      callbackURL: "/auth/google/callback",
      proxy: true
    },
    (accessToken, refreshToken, profile, cb) => {
      User.findOne({ googleId: profile.id }).then(existinguser => {
        if (existinguser) {
          //done(null, existinguser);
        } else {
          new User({ googleId: profile.id }).save().then(user => {
            //  done(null, user);
          });
        }
      });
    }
  )
);

随意问我错过的任何事情。 感谢。

0 个答案:

没有答案