处理passportjs中的服务器超时

时间:2014-05-08 15:25:14

标签: node.js passport.js passport-facebook

我按照Passport js页面中给出的代码示例。

app.get('/fbconnect', function (req, res) {
var loadingMessage = "Connecting to Facebook. Please Wait";
res.render('index', { title : 'Home', message : DEFAULT_MESSAGE, loadingMessage : loadingMessage, loadingDivDisplay : "block"}, function(err, html) {
    if (!err) {
        passport.authenticate('facebook', { scope : ['email', 'publish_actions'] })(req, res);
    }
});

});

app.get('/auth/facebook/callback', function (req, res) {
var loadingMessage = "Processing the request. Please wait",
    isAuthenticationError = false;
if(req.query && req.query.error){
    req.session.authError = req.query.error;
    req.session.authErrorReason = req.query.error_reason;
    isAuthenticationError = true;
}
res.render('index', { title : 'Home', message : DEFAULT_MESSAGE, loadingMessage : loadingMessage, loadingDivDisplay : "block"}, function(err, html){
    if (isAuthenticationError === true) {
        res.redirect('/');
    } else {
        console.log("into right place");
        passport.authenticate('facebook', { successRedirect: '/authorisationComplete'})(req, res);
    }
});

});

但我面临一些我自己的服务器问题,这需要很长时间,然后在身份验证后显示网关超时问题。

我尝试在从FB进行身份验证后立即从我的服务器显示一条消息(例如"处理请求。请等待"),同时花费2分钟的时间来达到网关超时。

但失败了。有人可以帮忙吗

2 个答案:

答案 0 :(得分:0)

这是通过Connect的session中间件来处理的,例如:

.use(connect.session({ secret: 'mysecretkey', cookie: { maxAge: 60000 }}))

这是你要找的吗?

答案 1 :(得分:0)

根据http://expressjs.com/4x/api.html#res.render,当您提供回调时,您必须确保呈现html字符串。

ie ..

var express = require('express');
var app = express();
app.engine('html', require('ejs').renderFile);
app.get('/', function(req, res){
  res.render('test.html', function (err, html) {
    res.end(html);  // explicitly sending the html response to the client
  });
});

app.listen(3000);

将呈现响应。但

var express = require('express');
var app = express();
app.engine('html', require('ejs').renderFile);
app.get('/', function(req, res){
  res.render('test.html', function (err, html) {
    // this is equivalent to what you have . No explicit response. You should try adding a res.end(here) here
  });
});

app.listen(3000);

不会