У меня проблемы с паспортом-facebook и nodejs / express.
Успешные входы обрабатываются хорошо. Однако по какой-то причине, когда подключение к FB не удается, мое приложение выдает ошибку сервера, которая не обнаруживается и возвращается со статусом 500. Я считаю, что использую довольно стандартную конфигурацию паспорта, поэтому я немного застрял в том, что может быть проблемой.
В этом случае, чтобы создать ошибку, я вхожу в свое изолированное приложение с тестовым пользователем из другого приложения.
Ошибка / stacktrace указывает, что ошибка находится в коде модуля, которого я не касаюсь:
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) в Route r._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)
Вот и довольно стандартный маршрут:
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"
},
Пока не повезло, и идеи заканчиваются, если не считать взлома модуля напрямую, что кажется ненужным.
Есть предположения?
Большое спасибо заранее.