由于“AuthorizationError”,来自passport-facebook的未捕获的服务器错误

时间:2013-11-15 16:31:07

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

我在使用passport-facebook和nodejs / express时遇到了一些问题。

成功登录处理得很好。但是,由于某种原因,当FB连接登录失败时,我的应用程序抛出一个服务器错误,该错误未被捕获并返回状态500.我相信我使用的是相当标准的护照配置,所以我有点卡住了什么可以是问题。

在这种情况下,要创建错误,我正在使用来自其他应用的测试用户登录我的沙盒应用。

错误/堆栈跟踪表示错误在模块代码中我没有碰到:

  

AuthorizationError       在Strategy.OAuth2Strategy.authenticate(/Users/username/Sites/node_projects/applicationname/node_modules/passport-facebook/node_modules/passport-oauth2/lib/strategy.js:126:25)       在Strategy.authenticate(/Users/username/Sites/node_projects/applicationname/node_modules/passport-facebook/lib/strategy.js:84:41)       在尝试时(/Users/username/Sites/node_projects/applicationname/node_modules/passport/lib/passport/middleware/authenticate.js:243:16)       在Passport.authenticate(/Users/username/Sites/node_projects/applicationname/node_modules/passport/lib/passport/middleware/authenticate.js:244:7)       在回调(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:164:37)       在param(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:138:11)       传递(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:145:5)       在Router._dispatch(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:173:5)       at Object.router(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:33:10)       在下一个(/Users/username/Sites/node_projects/applicationname/node_modules/express/node_modules/connect/lib/proto.js:193:15)

这是路线,非常标准:

app.get('/auth/facebook/callback', 
    passport.authenticate('facebook', { successRedirect: '/#',
                                    failureRedirect: '/#login' }));

req.query是

{"error_code":"2102","error_message":"User is not a test user owned by the application"}

在阅读了这个已解决的问题(https://github.com/jaredhanson/passport-oauth/issues/16)后,我添加了中间件,以便req.query为:

{"error_code":"2102","error_message":"User is not a test user owned by the application","error":true}

这是我添加的中间件(我正在删除,因为它不起作用):

app.use(function(req, res, next){
    if (req.query && !req.query.error && req.query.error_code) {
        req.query.error = true;
    }
    next();
});

我应该及时了解我的包裹和尝试卸载/重新安装所有内容:

"dependencies": {
    "express": "3.x",
    "mongodb": "1.3.x",
    "socket.io": "0.9.x",
    "mongoose": "3.6.x",
    "passport": "0.1.x",
    "passport-facebook": "1.0.x",
    "passport-local": "0.1.x",
    "bcrypt": "0.7.x",
    "handlebars": "1.0.x",
    "consolidate": "0.9.x",
    "imagemagick": "0.1.x",
    "aws-sdk": "1.12.x"
},

到目前为止没有运气,没有想法,没有直接黑客攻击模块,这似乎是不必要的。

有什么想法?

非常感谢。

1 个答案:

答案 0 :(得分:1)

尝试将应用程序从沙盒更改为非沙盒,并尝试重新创建错误。