Мне должно быть что-то упустить. Я использую стратегию Facebook для получения паспортов для аутентификации пользователей. Это делается с помощью 2-х запросов/[маршрутные обработчики]:passjs facebook передать запрос на обратный вызов
//one to initiate the the auth:
init: function (req, res, next) {
passport.authenticate('facebook', {
callbackURL: URL + '/facebook/callback',
state: req.body //attempting to put some state
})(req, res, next)
}
//one callback
callback: function (req, res, next) {
passport.authenticate('facebook', {
callbackURL: URL + '/facebook/callback'
},
function (err, profile, accessToken, refreshToken) {
if (err) return next(err)
res.send(passedReqBody)
})(req, res, next)
}
//the verify callback doesn't do much.
//Application logic is done in route callback handlers
passport.use(new FacebookStrategy({
clientID: config.facebook.id,
clientSecret: config.facebook.secret
},
//When setting passReqToCallback to true, it is set as the first argument
//to the verify callback. As in:
//function (req, accessToken, refreshToken, params, profile, done) {
//But this is the 'callback' request object. I want the 'init' request object.
function (accessToken, refreshToken, params, profile, done) {
//params.state is undefined
return done(null, profile, accessToken, refreshToken);
}));
Моя проблема заключается в том, что я хочу, чтобы запрос POST тело первой функции, которая будет выставлена в обработчик обратного маршрута.
Существует опция, доступная для конструктора OAuth2Strategy «passReqToCallback», который посылает последний запрос обратно на проверки обратного вызова, который не является полезным для меня (я хочу первый request.body)
Следующая вещь, которая выглядел правдоподобным путь, было использование опции «государственной», как в https://github.com/jaredhanson/passport-oauth/blob/master/lib/passport-oauth/strategies/oauth2.js#L169
Но эти значения не доступны на обратный вызов getOAuthAccessToken https://github.com/jaredhanson/passport-oauth/blob/master/lib/passport-oauth/strategies/oauth2.js#L124
Мой текущий вариант, чтобы добавить дополнительную переменную внутри OAuth2Strategy .prototype.authenticate(), которая устанавливается на 1-ю функцию и возвращается обратно, без изменений, к функции обратного вызова, но я не могу себе представить, что это путь.
U r спасательный спаситель :)) –