Zajmuję się tworzeniem aplikacji MEAN. Używam paszportu do uwierzytelniania - strategii lokalnych, facebookowych i google.jak radzić sobie z oddzwanianiem od strony paszportowej i facebookowej w kanciastym kliencie?
Używam klienta angularjs. Wszystkie trasy są obsługiwane przez klienta. Używam tylko danych serwera apis.
Podczas korzystania ze strategii paszportowej na Facebooku używam poniższego kodu na serwerze węzła zgodnie z dokumentami paszportowymi.
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']
}));
Problem jestem stoi to gdy użytkownik kliknie przycisk „Zaloguj się za pomocą Facebooka”
<a href="/auth/facebook" class="btn"><i class="fa fa-facebook"></i> Sign in using Facebook</a>
Klient będzie miał dostęp do „/ auth/Facebook” trasę, która będzie ostatecznie przekierowuje użytkownika do strony facebook walidacji poświadczenia użytkownika.
Po pomyślnym sprawdzeniu poprawności użytkownik zostanie przekierowany do trasy "/ home" zdefiniowanej w wartości "successRedirect".
Chodzi o to, że chcę używać niestandardowej funkcji oddzwaniania zamiast definiowania przekierowań w celu osiągnięcia sukcesu lub niepowodzenia. Będzie wyglądać jak poniżej:
problememapp.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!'
});
});
}
}));
Korzeń Jestem stoi tutaj, nie mogę używać powyżej niestandardowego zwrotnego jako klient nie jest wywołanie „auth/facebook/oddzwanianie” Trasa, nazywana jest przez Facebook. Tak więc, nie ma żadnego programisty sukcesu czekającego, aby złapać powyższą odpowiedź oddzwonienia po stronie klienta !!
Potrzebuję sposobu, aby uzyskać odpowiedź w postaci json na kliencie, aby wyeliminować przekierowanie po stronie serwera, a także sposób przekazywania wiadomości i nazwy użytkownika do klienta po pomyślnym uwierzytelnieniu przez Facebook.
Zaraz zrezygnuję z paszportu. Mając nadzieję na jakiekolwiek możliwe rozwiązanie przed usunięciem dużej ilości kodu!
Dzięki
Wielkie dzięki za jasną odpowiedź! – Designeer
@Designeer nie ma za co. Po powrocie w przypadku pojawienia się więcej problemów: D – onel0p3z
@ onel0p3z Robię to samo w reactjs zamiast kąta. Mój serwer jest na węźle i używam express. Z powodzeniem zaimplementowałem paszport-facebook po mojej stronie serwera. Teraz nazywam "/ auth/facebook" od reagowania za pomocą znacznika zakotwiczenia. Ale nie mam pojęcia, jak odzyskać odpowiedź na to w reakcji, ponieważ jest obsługiwana tylko przez serwer i nie chcę obsługiwać go poprzez response.redirect na serwerze .. Czy możesz zasugerować, jak sobie z tym poradzić? – Vijay