Я использую PassportJS и Facebook-стратегию для аутентификации пользователей на моем сайте.
Все хорошо, когда пользователь ничего не отменяет во всплывающем окне Facebook.
Однако, скажем, пользователь отменяет выбор электронной почты, я не получу ее обратно, что, очевидно, находится под контролем пользователя.
Мой вопрос: как мне направить их «куда-то еще» на основе данных, которые я повторил?
passport.use(new FacebookStrategy({
clientID: config.facebook.appID,
clientSecret: config.facebook.appSecret,
callbackURL: config.facebook.callbackURL,
profileFields: ['displayName', 'picture.type(large)', 'emails', 'birthday', 'location']},
function(accessToken, refreshToken, profile, done){
var newUser = new userModel({
fullname : profile.displayName,
profilePic : profile.photos[0].value || '',
email : profile.emails[0].value || '',
birthday : profile._json.birthday || '',
location : profile._json.location.name || '',
});
newUser.save(function(err){
done(null, newUser);
});
);
}
Я могу, конечно, сделать какой-то препроцессор, но я не знаю, что мне нужно делать, если данные недействительны. Например, сказать "Электронная почта" является обязательным. Как я скажу пользователю: «Поскольку вы не предоставили обязательное поле электронной почты, пожалуйста, заполните его», а затем я переведу пользователя на страницу настроек профиля.
Мой URL-адрес обратного вызова в приложении Facebook:
http://localhost:3000/auth/facebook/callback
И это маршрут NodeJS ниже:
router.get('/auth/facebook/callback', passport.authenticate('facebook', {
successRedirect:'/wall',
failureRedirect:'/login'
}));
Любой ввод поможет.
Заранее спасибо.