【问题标题】:Express 4.0 and Passport - Redirect to Facebook not workingExpress 4.0 和 Passport - 重定向到 Facebook 不起作用
【发布时间】:2014-06-03 23:22:58
【问题描述】:

我正在尝试使用带有护照的 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 中发生了什么变化,因为在以前的版本中一切正常。

【问题讨论】:

    标签: node.js facebook express passport.js


    【解决方案1】:

    也许您使用ajax 发送查询,请尝试点击链接:

     <a href="localhost:3000/auth/facebook">FB</a>
    

    我用:

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

    【讨论】:

      【解决方案2】:

      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 是 express 核心应用的 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,因此您需要真正理解这些:

      【讨论】:

      • 我尝试了一个新的 expressJs 4 项目,使用分离的表达式会话中间件,但我遇到了同样的问题。
      • 我找到了 Passport 的替代品,也适用于 express 4,github.com/bnoguchi/everyauth
      • 用新模块替换express.session?
      猜你喜欢
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多