У меня есть форма регистрации, где я собираю дополнительную информацию от пользователя, такую как страна, город, пол ... В конце формы пользователь может выбрать, будет ли он подписываться по электронной почте / паролю, в Google или Facebook. При подписке по электронной почте / паролю мой req.body содержит все дополнительные поля ввода.
passport.use('local-signup', new LocalStrategy({
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true
},
function(req, email, password, done) {
// Here req.body contains all my input fields
Однако при использовании facebookStrategy или googleStrategy мой объект req.body пуст. Это из-за обратного вызова в Google или Facebook, что содержимое моего объекта req.body потеряно?
passport.use(new GoogleStrategy({
clientID : configAuth.googleAuth.clientID,
clientSecret : configAuth.googleAuth.clientSecret,
callbackURL : configAuth.googleAuth.callbackURL,
passReqToCallback : true
},
function(req, token, refreshToken, profile, done) {
// Here my req.body is an empty object {}
Мой обратный вызов и аутентификация Google
// Google authentication and login
app.get('/auth/google', passport.authenticate('google', {
scope : ['profile', 'email']
}));
// Google - Callback after Google has authenticated the user
app.get('/auth/google/callback', passport.authenticate('google', {
successRedirect : '/users',
failureRedirect : '/login',
failureFlash : true
}));
Сейчас я решаюэто путем сохранения полей ввода в локальном хранилище браузера, но это не может быть правильным решением.