Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Passport Facebook身份验证窗口未弹出,用户仍添加_Javascript_Node.js_Facebook_Passport.js_Passport Facebook - Fatal编程技术网

Javascript Passport Facebook身份验证窗口未弹出,用户仍添加

Javascript 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

因此,当我昨天第一次运行应用程序时,验证屏幕显示正常。从那时起,即使从mongodb数据库中删除了我自己,身份验证窗口也不会弹出

我一直在寻找解决办法,但没有一个奏效。我也清理了我的饼干,也没用

我将非常感谢你们的任何想法

auth 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);
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。我希望这对将来出现这种情况的人有所帮助