Ich entwickle eine MEAN-Anwendung. Ich verwende den Pass für die Authentifizierung - lokale, Facebook- und Google-Strategien.wie man mit Pass-facebook Callback in eckigen Client umgehen?
Ich benutze angularjs Client. Das gesamte Routing wird auf dem Client gehandhabt. Ich verwende nur Server-Daten-API.
Bei der Verwendung der Pass-Facebook-Strategie verwende ich den unten angegebenen Code auf dem Node-Server gemäß Ausweisdokument.
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 ich bin vor, wenn Benutzer klicken Sie auf „Melden Sie sich mit“ Taste
<a href="/auth/facebook" class="btn"><i class="fa fa-facebook"></i> Sign in using Facebook</a>
Client wird Zugriff „/ Auth/facebook“ Route, die schließlich Benutzer auf Facebook-Seite umleitet für die Validierung Anmeldeinformationen des Benutzers.
Nach erfolgreicher Validierung wird der Benutzer zur Weiterleitung an "/ home" umgeleitet, wie im Wert "successRedirect" definiert.
Jetzt ist die Sache, ich möchte benutzerdefinierte Callback-Funktion verwenden, anstatt Weiterleitungen für Erfolg oder Misserfolg zu definieren. Es wird wie folgt aussehen:
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!'
});
});
}
}));
Die Wurzel Problem, das ich hier bin vor, ich nicht über benutzerdefinierte Callback verwenden können als Client ist nicht die „Auth/facebook/Rückruf“ Route aufrufen, wird es von Facebook genannt. Es gibt also keinen Erfolgs-Handler, der darauf wartet, die Callback-Antwort auf der Client-Seite zu erhalten !!
Ich möchte eine Möglichkeit, Antwort in JSON-Form bei Client zu erhalten Server-Seitenumleitung zu beseitigen und auch Weg, um Nachricht und Benutzername an den Client nach erfolgreicher Authentifizierung von Facebook übergeben.
Ich bin dabei, mit Pass aufzugeben. Auf eine mögliche Lösung hoffen, bevor Sie viel Code entfernen!
Dank
Vielen Dank für die klare Antwort! – Designeer
@Designer Sie sind willkommen. Post zurück für den Fall, dass Sie mehr Probleme finden: D – onel0p3z
@ onel0p3z Ich mache das gleiche in reactjs statt eckig. Mein Server ist auf Knoten und ich verwende Express. Ich habe Pass-facebook erfolgreich auf meiner Serverseite implementiert. Jetzt rufe ich '/ auth/facebook' von react durch Anker-Tag. Aber ich habe keine Ahnung, wie man die Antwort dafür in Reaktion zurückbekommt, da es nur vom Server gehandhabt wird und ich nicht mit response.redirect auf dem Server umgehen will. Können Sie mir bitte vorschlagen, wie Sie mit diesem Szenario umgehen? – Vijay