Express 4.0和Passport - 重定向到Facebook无法正常工作

时间:2014-04-19 14:27:18

标签: node.js facebook express passport.js

我正在尝试使用护照的Express 4.0进行简单的Facebook登录。

    app.route('/auth/facebook')
    .get(function(req, res, next){
        console.log('Authentication start');

        var aut = passport.authenticate('facebook',
                             {
                                scope: ['read_stream',
                                        'publish_actions']
                             }, function(err) {

            });
     })

此路由应该将浏览器重定向到Facebook页面身份验证,但没有任何反应,请求超时。 我试图了解Express中发生了哪些变化,因为在之前的版本中一切都运行了。

2 个答案:

答案 0 :(得分:1)

1)您可能使用passport.session,它依赖于express.session被加载。如果是这样,你有一个看起来像这样的块:

app.configure(function() {
  app.use(express.static('public'));
  app.use(express.cookieParser());
  app.use(express.bodyParser());
  app.use(express.session({ secret: 'keyboard cat' }));
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(app.router);
});

2)express.session是快递核心应用的no longer part。要使用Express v4进行会话,您可以使用“新”express-session来保持相对连续的效果。

在v4应用中,您需要使用新的express-session模块,然后使用它来代替原始express.session。修改后的代码看起来有点像这样:

var express = require('express')
var session = require('express-session')

var app = express()

app.use(session({secret: 'keyboard cat'}))

express-session页面(上面链接)包含有关如何使用该模块的其他信息。

底线:如果您在使用Express v3中编写的示例构建Express v4应用程序时,您需要仔细阅读有关Express版本之间差异的文档以及如何使用升级。大多数示例/文档都假定为Express v3,因此您需要真正理解这些:

答案 1 :(得分:-2)

也许您使用ajax发送查询,请尝试按照链接:

 <a href="localhost:3000/auth/facebook">FB</a>

我用:

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