2016-11-08 4 views
0

Ich habe eine Komponente in Angular 2, die einen Dienst aufruft und es jemandem erlaubt, sich bei Facebook anzumelden. Es funktioniert wie folgt:Asynchrone Daten von Angular 2 zurückgeben Service

In meiner Komponente ich meinen Dienst rufen mit this.facebook.login()

Und in meinem Dienst, innerhalb login(), ich jemand mit FB.login(res => { //do stuff with res });

anmelden lassen Sie die Facebook-Auth Fenster Dies erscheint, in dem Sie eingeben Ihr Benutzername und Passwort.

Das funktioniert gut. Nachdem sich jemand bei seinem Facebook-Account anmeldet, hat res die Daten, die ich von Facebook benötige. Aber was ich wirklich tun möchte, ist, die Daten zurück zu meiner Komponente zu bringen, damit ich Sachen damit machen kann. Wie kann ich diese Daten zurückgeben, nachdem sie sich bei Facebook eingeloggt haben? Ich habe versucht mit Observables, aber ich laufe immer wieder auf Fehler.

+0

Können Sie Code anzeigen, was Sie versucht haben, damit es funktioniert? – silentsod

+0

Ich kann meine Frage nicht bearbeiten, aber hier ist, was ich versucht habe. In meiner Komponente: 'this.facebook.login(). Subscribe (Daten => {console.log (data);});'. In meinem Service: 'FB.login zurückgeben (res => {return res;});'. Ich denke, ich behandle etwas wie eine beobachtbare, wenn es nicht wirklich beobachtbar ist, aber ich bin mir nicht sicher. – user5021816

Antwort

1

Ohne Ihren vollständigen Code zu sehen, kann ich nicht genau sagen, aber Sie sind auf dem richtigen Weg. In Ihrem Dienst, in dem Sie den FB-Login durchführen, müssen Sie diese Option als beobachtbar festlegen, damit Sie sich anmelden können.

public Login(): Observable<any> { 
    return Observable.create((observer: NextObserver<any>) => { 
     // Do the FB login and wait for the data to come back 
     FB.login(response => { 
      // Return the data as an observable 
      observer.next(<any>response); 
      observer.complete(); 
     }); 
    }); 
} 
+0

Genau das habe ich gebraucht. Vielen Dank! – user5021816

+0

kann den Namen NextObserver nicht finden. Wie geht man damit um? –