0

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 分かかります。

しかし失敗。誰かがこれを手伝ってくれますか

4

2 に答える 2

0

これは、Connect のセッションミドルウェアを介して処理されます。たとえば、次のようになります。

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

それはあなたが探しているものですか?

于 2014-05-08T15:33:54.413 に答える
0

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

しません。

于 2014-05-08T15:38:39.313 に答える