gpt4 book ai didi

node.js - passport-facebook 没有做重定向

转载 作者:搜寻专家 更新时间:2023-11-01 00:32:16 25 4
gpt4 key购买 nike

这是我愚蠢的 nodejs 模块。当 passport.authenticate('facebook') 被调用时,它只是卡住。

我正在使用 Express 4.2.0。有什么想法吗?

验证调用不会阻塞。我应该如何从函数返回?

我见过的所有示例都在 app.js 中调用了 authenticate。我不想在 app.js 中配置身份验证策略。

var express = require('express');
var router = express.Router();

var passport = require('passport')
var facebookStrategy = require('passport-facebook').Strategy;

passport.use(new facebookStrategy({
clientID: "xxx",
clientSecret: "xxx",
callbackURL: "http://localhost:3000/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {

}
));

router.get('/', function(req, res) {
passport.authenticate('facebook');
});


module.exports = router;

最佳答案

必须在您的facebookStrategy 回调函数中调用done()。如果没有它,事情就会挂起,因为调用 done() 是系统知道如何继续进行的方式。即使您现在只有 stub 代码,您至少需要 done() 来保持控制流正常进行。

其次,passport.authenticate返回一个中间件函数,所以你不用直接调用它,而是传递给express:

router.get('/', passport.authenticate('facebook')); //don't wrap here

关于您上面的 router.get 回调的第二部分不正确的是它从不响应,这也是使 express 挂起的一种方式。

修复这些问题后,您将需要另外一种方法来处理 facebook 回调:

var options = {
successRedirect: '/home',
failureRedirect: '/bummer-dude'
};
router.get('/auth/facebook/callback', passport.authenticate('facebook', options));

关于node.js - passport-facebook 没有做重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26474939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com