1

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

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

在这种情况下,为了创建一个错误,我正在使用来自另一个应用程序的测试用户登录我的沙盒应用程序。

错误/堆栈跟踪表明错误在我没有触及的模块代码中:

AuthorizationError at Strategy.OAuth2Strategy.authenticate (/Users/username/Sites/node_projects/applicationname/node_modules/passport-facebook/node_modules/passport-oauth2/lib/strategy.js:126:25) at 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) 在参数 (/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:138:11) 在 Router._dispatch (/Users/username/Sites/node_projects/ applicationname/node_modules/express/lib/router/index.js:173:5) 在 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)路由器(/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)路由器(/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"
},

到目前为止没有运气并且没有想法,没有直接破解模块,这似乎没有必要。

有什么想法吗?

首先十分感谢。

4

1 回答 1

1

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

于 2013-11-18T19:13:12.870 回答