AngularFire2 Anmeldung Abmelden Anmeldung zum Auth-Problem - Angular2

9

Ok, ich habe meinen Kopf an die Wand geschlagen, um einen halben Tag lang versuchen zu können, dies zu lösen. Grund dafür ist, dass ich aufgrund meines Wissensstandes mit AngularFire2 und Angular2 etwas Anfänger bin .

Ich habe eine Anwendung, ein einfaches Login-Formular, das AngularFire2 verwendet, verbindet sich mit Facebook , ruft die Benutzer Access Token und Facebook Id ab und ruft dann die Facebook Graph API auf, die Vorname, Nachname, Geschlecht, E-Mail usw. zurückgibt .

Wie hier gezeigt:

%Vor%

Facebook Id = Kommt von auth Access Token = Kommt von authState

Ich speichere dann die von Facebook Graph API zurückgegebenen Informationen in Firebase .

Nun kommt das Problem, wie Sie in der oben angegebenen Funktion sehen können, ich habe die auth -Methode abonniert, dies ermöglicht mir den Zugriff auf die Facebook Id und die Access Token , die erforderlich sind, um% co_de aufzurufen %

In der Navigation meiner Anwendung habe ich eine Logout-Taste. Wenn der Benutzer auf diese Schaltfläche klickt, rufe ich

auf %Vor%

Sobald ich mich abgemeldet habe, wird meine oben angegebene Funktion aufgerufen, weil ich die Änderung von Facebook Graph API abonniert habe. Ich habe eine if-Anweisung hineingestellt, um zu überprüfen, ob auth null ist. Wenn ja, was funktioniert - Scheint ein bisschen hacky zu mir.

Wenn ich versuche, mich wieder anzumelden, schlägt die URL für den Aufruf von auth auf Facebook Graph API fehl, die angibt, dass es ${auth.facebook.uid} ist. Ich bin mir nicht ganz sicher, warum dies fehlschlagen würde, weil es für mich als neu eingestuft wird Melden Sie sich an, damit die Methode von Anfang bis Ende erneut ausgeführt werden sollte.

Jetzt ist meine Frage:

Wie kann ich mich in meinem Login mit Facebook-Methode um den undefined kümmern? und immer noch Zugriff auf die auth und Facebook Id

Ich versuche einen Weg zu finden, wie die Methode für zwei Szenarien funktioniert:

  1. Der Benutzer existiert bereits in der Datenbank
  2. Der Benutzer existiert nicht, daher ist es eine neue Anmeldung.

Die Abmeldung und die Anmeldung / Anmeldung sollten beide voneinander isoliert sein und sich nicht gegenseitig behindern.

Wenn jemand irgendwelche Kenntnisse teilen oder einen viel saubereren Weg vorschlagen kann, würde ich es sehr zu schätzen wissen.

Aktualisieren

Ich habe ein Repository in Access Token erstellt, das eine heruntergefahrene Version meiner Anwendung ist und den Fehler anzeigt, den ich habe.

Repo

Um zu replizieren:

In der Github loginWithFacebook-Methode sehen Sie diese Codezeile:

%Vor%

Kommentieren Sie dies und folgen Sie den nachstehenden Schritten.

  1. Melden Sie sich mit Facebook auf der Anmeldeseite an
  2. Abmelden über die Schaltfläche Abmelden
  3. Melden Sie sich direkt nach dem Abmelden mit Facebook an

Sie werden feststellen, dass Sie sich zum ersten Mal einloggen, sobald Sie sich abmelden und sich erneut mit Facebook anmelden. Die Grafik-API schlägt fehl, weil login.service nicht definiert ist.

Jetzt Idealerweise möchte ich den Authentifizierungsgrund nicht abonnieren, weil wir die Anmeldung mit Google und E-Mail und Passwort durchführen werden.

Der einzige Ort, an dem ich das Ereignis auth.facebook.uid abonnieren möchte, wäre in der Navigationsleiste, die die Menüführung ändert, wenn der Benutzer autorisiert wird.

HINWEIS: Dies ist mit einem Testkonto auf Firebase verknüpft. Sobald dieses Problem gelöst wurde, wird das Testkonto gelöscht. Alle Kontoinformationen, die zum Testen verwendet wurden, werden gelöscht.

Endgültiges Update

Ok, also habe ich beschlossen, ein Kopfgeld dafür zu eröffnen, um eine Lösung zu finden.

Der einzige Weg, wie ich das sehen kann, ist eine Login-Seite, diese Login-Seite wird für neue und bestehende Benutzer sorgen, wenn der Benutzer sich mit Facebook anmeldet, wenn sie neu sind, dann rufen Facebook Graph API Informationen über sie und dann speichern Sie es, wenn sie vorhanden sind, dann rufen Sie nicht die Facebook Graph API auf.

Wie ich erwarte, dass das funktioniert:

Neuer Benutzer:

%Vor%

Vorhandener Benutzer

Wenn der Benutzer sich bereits über Facebook angemeldet hat, wenn er sich anmeldet, möchte ich die Facebook Graph API nicht aufrufen, der Aufruf des Graphen ist nur einmal für neue Benutzerkonten erforderlich.

Auch das Repo ist noch verfügbar.

Fehler in der Konsole, nach der ersten Registrierung, Abmeldung, Anmeldung:

AngularFire2 Paket json

%Vor%     
Code Ratchet 01.02.2017, 07:23
quelle

1 Antwort

2

Sie sollten ein LoginService ! erstellen!

Und separates Login und Auth-Abonnement.

%Vor%

Siehe meinen Zweig: Ссылка

Und PR: Ссылка

Es gibt ein Problem mit Ihrem LoginService . Es ist zweimal instanziiert, ich bin mir nicht sicher warum.

    
mxii 01.02.2017 07:35
quelle