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.

Antworten auf die Frage(14)

Ihre Antwort auf die Frage