Паспорт обратного вызова 500 ошибка сервера
Я изо всех сил пытался заставить работать паспорт. Я использую passport-github2, но, пытаясь устранить проблему, я также пробовал использовать passport-facebook и twitter, но ни один из них сейчас не работает.
У меня было простое приложение, которое работало с Facebook / Twitter, и теперь они больше не работают, так что, похоже, это связано с более новой версией Passport.
Вот что у меня есть в файле github.js, доступ к которому осуществляется с помощью URL api/auth/github
var express = require('express'),
router = express.Router(),
config = require('config'),
githubAuth = config.get('github'),
githubStrategy = require('passport-github2').Strategy,
flash = require('connect-flash'),
GITHUB_CLIENT_ID = githubAuth.githubClientID,
GITHUB_CLIENT_SECRET = githubAuth.githubClientSecret,
app = express();
//passport vars
var passport = require('passport'),
session = require('express-session'),
methodOverride = require('method-override'),
bodyParser = require("body-parser"),
cookieParser = require("cookie-parser");
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (obj, done) {
done(null, obj);
});
passport.use(new githubStrategy({
clientID: GITHUB_CLIENT_ID,
clientSecret: GITHUB_CLIENT_SECRET,
callbackURL: 'http://localhost:3000/api/auth/github/callback'
},
function (token, tokenSecret, profile, done) {
// asynchronous verification, for effect...
return done(null, profile);
}
));
app.use(cookieParser());
app.use(bodyParser());
app.use(methodOverride());
app.use(session({
secret: 'keyboard cat',
resave: true,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash())
router.get('/', passport.authenticate('github', {
scope: ['user']
}));
router.get('/callback',
passport.authenticate('github', {
failureRedirect: '/',
successRedirect: '/'
}),
function (req, res) {
res.send('Hello World!!');
}
);
module.exports = router;
Когда я иду в http://localhost:3000/api/auth/github
github позволяет мне аутентифицироваться, и я нажимаю зеленую кнопку, которая возвращает меня к URL обратного вызова, и там все взрывается, и я вижу это сообщение:
Error
at /Users/cynt005/Documents/Code/UXUIteamwebsite/node_modules/passport-github2/lib/strategy.js:96:19
at passBackControl (/Users/cynt005/Documents/Code/UXUIteamwebsite/node_modules/oauth/lib/oauth2.js:132:9)
at IncomingMessage.<anonymous> (/Users/cynt005/Documents/Code/UXUIteamwebsite/node_modules/oauth/lib/oauth2.js:157:7)
at emitNone (events.js:110:20)
at IncomingMessage.emit (events.js:207:7)
at endReadableNT (_stream_readable.js:1059:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
Приставка:
GET http://localhost:3000/api/auth/github/callback?code=60a130c5c54a6fc30266 500 (Internal Server Error)
Я гуглил по всей сети, и я не могу найти решение, которое работает для меня. В github есть ветка, но официальное решение пока не предоставлено:
https://github.com/jaredhanson/passport-facebook/issues/100
Любая помощь будет оценена!!
1 ответ
Решаемые. Проблема заключалась в том, что я должен был держать все в том же файле, что и app.js
Я все еще хотел бы знать, есть ли лучший / аккуратный способ отделить этот файл, не нарушая код.