【问题标题】:handle server timeout in passportjs在passportjs中处理服务器超时
【发布时间】:2014-06-26 02:20:58
【问题描述】:

我遵循 Passport js page 中给出的代码示例。

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 分钟的时间才能达到网关超时。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    这是你要找的吗?

    【讨论】:

      【解决方案2】:

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

      即..

      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);
      

      不会。

      【讨论】:

        猜你喜欢
        • 2022-07-29
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 2014-02-19
        • 2012-01-10
        • 1970-01-01
        • 2011-07-10
        • 2017-05-14
        相关资源
        最近更新 更多