我已经尝试过几乎所有东西(读取线程,在谷歌搜索)但我不明白为什么我的回调网址没有被执行。经过调试,我发现请求被发送到谷歌服务器,我回来了但是回调没有被执行。当我导航到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);
});
}
});
}
)
);
随意问我错过的任何事情。 感谢。