Angular2 URL-Abfrageparameter abrufen
Ich richte eine Facebook-Registrierung für meine Angular2-Web-App ein. Sobald die Anwendung über Facebook akzeptiert wurde (nachdem sie auf die Facebook-Autorisierungsseite weitergeleitet wurde), wird sie mit dem Token und dem Code als URL-Parameter an meine Webanwendung weitergeleitet:
http://localhost:55976/?#access_token=MY_ACCESS_TOKEN&code=MY_CODE
Aber sobald die Seite geladen ist, werden die Parameter entfernt. Die URL wird:
http://localhost:55976/
Wie kann ich die Parameter (access_token und code) extrahieren, bevor sie entfernt werden? Meine Routing-Konfiguration enthält:
{ path: 'login', component: LoginComponent },
{ path: 'login/:access_token/:code', component: LoginComponent },
BEARBEITEN
Hier erfahren Sie, wie ich in meiner login.component zu Facebook umleite: html:
<a class="btn btn-social btn-facebook socialaccount_provider facebook" title="Facebook" href="#" (click)="login_facebook()">
<span class="fa fa-facebook"></span> <span style="padding-left:25px">Sign in with Facebook</span>
</a>
Typoskript
login_facebook() {
let url = 'https://www.facebook.com/dialog/oauth?'+
'client_id=my_client_id' +
'&redirect_uri=' + encodeURIComponent('http://localhost:55976/#/login/') +
'&response_type=code%20token';
console.log(url);
window.location.href = url;
}
Die Facebook API Weiterleitung zuhttp: // localhost: 55976 / # / login /, hier versuche ich, die Parameter access_token und code abzurufen.
EDIT 2:
Wenn ich den Scharfzeichner in der Weiterleitungs-URL entferne, leite mich Facebook zur richtigen URL weiter, aber ohne den Scharfzeichner kann Angular die URL nicht auflösen.
Vor dem Entfernen von '#':
redirect_uri: http://localhost:55976/#/login/
facebook return: http://localhost:55976/?#access_token=MY_ACCESS_TOKEN&code=MY_CODE
Nach dem Entfernen von '#':
redirect_uri: http://localhost:55976/login/
facebook return: http://localhost:55976/login/?#access_token=MY_ACCESS_TOKEN&code=MY_CODE
Das bedeutet, dass das Problem von der Schärfe herrührt. Ohne das scharfe, eckige Ergebnis wird HTTP-Fehler 404.0 - Nicht gefunden zurückgegeben.