Я разрабатываю приложение MEAN. Я использую паспорт для проверки подлинности - локальные, facebook и google стратегии.как обращаться с обратным вызовом паспорт-facebook в угловом клиенте?
Я использую клиент angularjs. Вся маршрутизация выполняется клиентом. Я использую только серверные данные apis.
При использовании стратегии паспорт-facebook я использую код ниже на сервере узла в соответствии с документами паспорта.
app.get('/auth/facebook',passport.authenticate('facebook-auth', { scope : ['email'] }));
app.get('/auth/facebook/callback',passport.authenticate('facebook-auth', {
successRedirect : '/home',
failureRedirect : '/login',
scope:['email']
}));
Проблема я столкнулся, когда пользователь нажимает на «Войти при помощи Facebook» кнопку
<a href="/auth/facebook" class="btn"><i class="fa fa-facebook"></i> Sign in using Facebook</a>
Клиент будет иметь доступ «/ авт/facebook» маршрут, который будет в конечном счете перенаправлять пользователя на facebook страницу для проверки учетные данные пользователя.
После успешной проверки пользователь будет перенаправлен на маршрут «/ home», как определено в «successRedirect».
Теперь я хочу использовать пользовательскую функцию обратного вызова вместо определения перенаправления для успеха или сбоя. Это будет выглядеть, как показано ниже:
app.get('/auth/facebook/callback',passport.authenticate('facebook-auth', function(err,user,info){
if(err){
throw err;
}
else if(user === 'userexists'){
res.json({
'state':false,
'message':'User with this e-mail already exists'
});
}
else{
req.logIn(user,function(loginErr){
if(loginErr){
throw loginErr;
}
res.json({
'state':true,
'message':'You logged in successfully!'
});
});
}
}));
корень проблемы я столкнулся здесь, я не могу использовать выше обратного вызова в качестве клиента не вызывая «авториз/facebook/обратный вызов» маршрута, его называют Facebook. Итак, нет никакого обработчика успеха, ожидающего, чтобы уловить ответ обратного вызова на стороне клиента!
Я хочу, чтобы какой-то способ получить ответ в json-форме на клиенте, чтобы устранить перенаправление на стороне сервера, а также способ передать сообщение и имя пользователя клиенту после успешной аутентификации с помощью facebook.
Я собираюсь бросить паспорт. Надеемся на любое возможное решение, прежде чем удалять много кода!
Благодаря
Большое спасибо за четкий ответ! – Designeer
@Designeer, пожалуйста. Отправьте сообщение в том случае, если вы найдете больше вопросов: D – onel0p3z
@ onel0p3z Я делаю то же самое в реакциях вместо углового. Мой сервер находится в узле, и я использую выражение. Я успешно реализовал паспорт-facebook на моей стороне сервера. Теперь я вызываю '/ auth/facebook' из реакции через тег привязки. Но я понятия не имею, как вернуть ответ для этого в ответ, поскольку он обрабатывается только сервером, и я не хочу обрабатывать его через response.redirect на сервере. Не могли бы вы предложить, как справиться с этим сценарием? – Vijay