Javascript Passport Facebook身份验证窗口未弹出,用户仍添加
因此,当我昨天第一次运行应用程序时,验证屏幕显示正常。从那时起,即使从mongodb数据库中删除了我自己,身份验证窗口也不会弹出 我一直在寻找解决办法,但没有一个奏效。我也清理了我的饼干,也没用 我将非常感谢你们的任何想法 auth routes.jsJavascript Passport Facebook身份验证窗口未弹出,用户仍添加,javascript,node.js,facebook,passport.js,passport-facebook,Javascript,Node.js,Facebook,Passport.js,Passport Facebook,因此,当我昨天第一次运行应用程序时,验证屏幕显示正常。从那时起,即使从mongodb数据库中删除了我自己,身份验证窗口也不会弹出 我一直在寻找解决办法,但没有一个奏效。我也清理了我的饼干,也没用 我将非常感谢你们的任何想法 auth routes.js router.get("/facebook", passport.authenticate("facebook", ({ display: 'popup' }))); router.get("/facebook/callback", p
router.get("/facebook", passport.authenticate("facebook", ({ display: 'popup' })));
router.get("/facebook/callback",
passport.authenticate("facebook", {
failureRedirect: "/auth/login"
}), (req, res) => {
res.redirect("/")
}
);
const authCheck = (req, res, next) => {
if(!req.user) {
res.redirect("/auth/login")
} else {
next();
}
}
passport.serializeUser((user, done) => {
done(null, user.id)
});
passport.deserializeUser((id, done) => {
User.findById(id).then((user) => {
done(null, user.id)
})
});
passport.use("facebook", new FacebookStrategy({
clientID: process.env.clientID,
clientSecret: process.env.clientSecret,
callbackURL: "http://localhost:3000/auth/facebook/callback"
}, (accessToken, refreshToken, profile, done) => {
User.findOne({ userID: profile.id }, (err, user) => {
if(user) {
console.log("Already a user");
done(null, user)
} else {
new User ({
userID : profile.id,
userName : profile.displayName
}).save().then((newUser) => {
console.log(" ")
console.log("New user created! ===> ")
console.log(newUser);
done(null, user);
})
}
})
}))
app.use(passport.initialize());
app.use(passport.session());
app.use("/auth/", authRoutes);
app.use("/profile/", profileRoutes);
profile routes.js
router.get("/facebook", passport.authenticate("facebook", ({ display: 'popup' })));
router.get("/facebook/callback",
passport.authenticate("facebook", {
failureRedirect: "/auth/login"
}), (req, res) => {
res.redirect("/")
}
);
const authCheck = (req, res, next) => {
if(!req.user) {
res.redirect("/auth/login")
} else {
next();
}
}
passport.serializeUser((user, done) => {
done(null, user.id)
});
passport.deserializeUser((id, done) => {
User.findById(id).then((user) => {
done(null, user.id)
})
});
passport.use("facebook", new FacebookStrategy({
clientID: process.env.clientID,
clientSecret: process.env.clientSecret,
callbackURL: "http://localhost:3000/auth/facebook/callback"
}, (accessToken, refreshToken, profile, done) => {
User.findOne({ userID: profile.id }, (err, user) => {
if(user) {
console.log("Already a user");
done(null, user)
} else {
new User ({
userID : profile.id,
userName : profile.displayName
}).save().then((newUser) => {
console.log(" ")
console.log("New user created! ===> ")
console.log(newUser);
done(null, user);
})
}
})
}))
app.use(passport.initialize());
app.use(passport.session());
app.use("/auth/", authRoutes);
app.use("/profile/", profileRoutes);
passport setup.js
router.get("/facebook", passport.authenticate("facebook", ({ display: 'popup' })));
router.get("/facebook/callback",
passport.authenticate("facebook", {
failureRedirect: "/auth/login"
}), (req, res) => {
res.redirect("/")
}
);
const authCheck = (req, res, next) => {
if(!req.user) {
res.redirect("/auth/login")
} else {
next();
}
}
passport.serializeUser((user, done) => {
done(null, user.id)
});
passport.deserializeUser((id, done) => {
User.findById(id).then((user) => {
done(null, user.id)
})
});
passport.use("facebook", new FacebookStrategy({
clientID: process.env.clientID,
clientSecret: process.env.clientSecret,
callbackURL: "http://localhost:3000/auth/facebook/callback"
}, (accessToken, refreshToken, profile, done) => {
User.findOne({ userID: profile.id }, (err, user) => {
if(user) {
console.log("Already a user");
done(null, user)
} else {
new User ({
userID : profile.id,
userName : profile.displayName
}).save().then((newUser) => {
console.log(" ")
console.log("New user created! ===> ")
console.log(newUser);
done(null, user);
})
}
})
}))
app.use(passport.initialize());
app.use(passport.session());
app.use("/auth/", authRoutes);
app.use("/profile/", profileRoutes);
server.js
router.get("/facebook", passport.authenticate("facebook", ({ display: 'popup' })));
router.get("/facebook/callback",
passport.authenticate("facebook", {
failureRedirect: "/auth/login"
}), (req, res) => {
res.redirect("/")
}
);
const authCheck = (req, res, next) => {
if(!req.user) {
res.redirect("/auth/login")
} else {
next();
}
}
passport.serializeUser((user, done) => {
done(null, user.id)
});
passport.deserializeUser((id, done) => {
User.findById(id).then((user) => {
done(null, user.id)
})
});
passport.use("facebook", new FacebookStrategy({
clientID: process.env.clientID,
clientSecret: process.env.clientSecret,
callbackURL: "http://localhost:3000/auth/facebook/callback"
}, (accessToken, refreshToken, profile, done) => {
User.findOne({ userID: profile.id }, (err, user) => {
if(user) {
console.log("Already a user");
done(null, user)
} else {
new User ({
userID : profile.id,
userName : profile.displayName
}).save().then((newUser) => {
console.log(" ")
console.log("New user created! ===> ")
console.log(newUser);
done(null, user);
})
}
})
}))
app.use(passport.initialize());
app.use(passport.session());
app.use("/auth/", authRoutes);
app.use("/profile/", profileRoutes);
嗯,我承认我觉得有点傻。我想出来了 Facebook只对您进行一次身份验证,为了多次显示身份验证屏幕,您需要删除对Facebook设置的权限 事后看来,这应该是常识lol。我希望这对将来出现这种情况的人有所帮助