我正在尝试使用护照的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中发生了哪些变化,因为在之前的版本中一切都运行了。
答案 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'));