【问题标题】:passport-facebook not doing a redirect护照脸书没有做重定向
【发布时间】:2014-12-15 23:36:37
【问题描述】:

这是我愚蠢的 nodejs 模块。当passport.authenticate('facebook') 被调用时,它就会冻结。

我使用的是 Express 4.2.0。有什么想法吗?

身份验证调用不会阻塞。我应该如何从函数中返回?

我在 app.js 中看到的所有示例都调用 authenticate。我不想在 app.js 中配置身份验证策略。

var express = require('express');
var router = express.Router();

var passport = require('passport')
var facebookStrategy = require('passport-facebook').Strategy;

passport.use(new facebookStrategy({
        clientID: "xxx",
        clientSecret: "xxx",
        callbackURL: "http://localhost:3000/auth/facebook/callback"
    },
    function(accessToken, refreshToken, profile, done) {

    }
));

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


module.exports = router;

【问题讨论】:

    标签: node.js passport-facebook


    【解决方案1】:

    必须在您的 facebookStrategy 回调函数中调用 done()。没有它,事情就会挂起,因为调用done() 是系统知道继续进行的方式。即使你现在只有存根代码,你至少需要done() 来保持控制流正常进行。

    其次,passport.authenticate返回一个中间件函数,所以你不直接调用它,你传递它来表达:

    router.get('/', passport.authenticate('facebook')); //don't wrap here
    

    关于您上面的router.get 回调的第二部分不正确的是它从不响应,这也是一种使快速挂起的方法。

    一旦这些问题得到解决,您将需要另外一条路由来处理 facebook 回调:

    var options = {
      successRedirect: '/home',
      failureRedirect: '/bummer-dude'
    };
    router.get('/auth/facebook/callback', passport.authenticate('facebook', options));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多