Was ist der richtige Weg Facebook Login für mobile App zu tun (mit node.js / pass.js Server)

9

Ich habe eine mobile App, die mit dem Backend-Server arbeitet. Ich würde gerne wissen, welche Best Practices für die Anmeldung mit Facebook verwendet werden (Konto erstellen) und dann das gesamte System synchronisieren.

Folgendes verstehe ich bisher: - Die mobile App kann sich auf dem Gerät einloggen und das access_token erhalten - Zugriffstoken können auf den Server übertragen werden. Ich habe einen Proof-of-Concept gemacht, indem ich den Pass-facebook-Token verwendet habe, der an eine api.myhost.com/auth/facebook Route angehängt wurde, und es scheint, als könnte ich den Benutzer authentifizieren und seine FB-Daten abrufen. Daher kann ich ihn entweder zu bestehenden Benutzer in meiner Datenbank zuordnen oder einen neuen Datensatz erstellen.

Was ich nicht verstehe: 1) Muss ich https verwenden, um das FB-Token auf meinen Server zu übertragen?

2) Was mache ich für meine anderen Anfragen, die authentifiziert werden sollen. Ich denke nicht, dass ich für jede Anfrage zu FB gehen kann. Eine Option, die mir in den Sinn kommt, ist, ein anderes (mein eigenes) Zugriffstoken zu generieren und es als Ergebnis der FB-Authentifizierung zurückzugeben.

Der einfachste Weg ist die Verwendung von Pass-facebook-token-Sitzungen (so dass die Cookie-Sitzungs-ID serialisiert und in die Benutzer-ID serialisiert werden kann). Aber das bedeutet, dass ich einige KV-Speicher für Sitzungen beibehalten muss.

Ein anderer Weg wäre, mein eigenes zufälliges Token für diesen Benutzer zu generieren, es zusammen mit der Benutzer-ID bei erfolgreicher Anmeldung zurückzugeben, es im Benutzerdatensatz zu speichern und jeden API-Aufruf vom Client dieses ID / Token-Paar bereitzustellen und sie jeweils erneut zu validieren Zeit manuell, ohne auf den Pass angewiesen zu sein. Oder vielleicht mit der lokalen Passport-Strategie?

Welcher ist besser? Was sind Vor- / Nachteile von jedem?

2) Wenn ich den FB-Token für das Posten in der FB und für die Analyse von Graphen (Freunde usw.) verwenden möchte, I Ich plane, das Token auf dem Server zu speichern. Wie oft muss ich es auffrischen? Jedes Mal, wenn die App ein Token auf dem Client startet und aktualisiert, sollte ich mich erneut mit meinem Server authentifizieren, indem ich ein neues FB-Token verwende? Was ist mit dem Aktualisieren von Benutzer-FB-Tokens bei Server-zu-Server-Aufrufen? Sollte ich es jemals tun, wenn ich den Zugriff auf die FB-Daten des Benutzers behalten möchte, aber der Benutzer die Verwendung von my aufhebt oder es zu selten benutzt?

Gibt es irgendwo ein Kochbuch mit einem Arbeitsschema, das gut funktioniert?

Danke!

    
Dmitry Fink 08.05.2014, 06:09
quelle

1 Antwort

0

Facebook Tokensicherheit

Das Token, das Sie auf Ihrem Mobile App-Client erstellt haben, gilt für Ihre Facebook-App, der Sie bei der Authentifizierung die ID zugewiesen haben. Ich würde immer HTTPS verwenden, wenn Token über das Internet oder andere flüchtige Informationen kommuniziert werden.

Facebook-Token läuft ab & amp; Aktualisieren

Wenn Sie die Authentifizierung in Ihrer mobilen App durchführen, erhalten Sie oft die abgelaufene Zeit des Tokens in der Antwort mit dem Token. Der Tokenablauf wird in der Facebook-API erläutert.

  

Native mobile Apps, die Facebooks SDKs verwenden, erhalten langlebige Zugriffstoken, die ungefähr 60 Tage lang gültig sind. Diese Tokens werden einmal pro Tag aktualisiert, wenn die Person, die Ihre App verwendet, eine Anfrage an die Facebook-Server sendet. Wenn keine Anforderungen gestellt werden, läuft das Token nach etwa 60 Tagen ab und die Person muss den Login-Ablauf erneut durchlaufen, um ein neues Token zu erhalten.

Über das Aktualisieren des Tokens:

  

Selbst das langlebige Zugriffstoken wird eventuell ablaufen. Sie können jederzeit ein neues langlebiges Token generieren, indem Sie die Person zurück an den von Ihrer Webanwendung verwendeten Anmeldefluss senden. Beachten Sie, dass die Person sich nicht erneut anmelden muss. Sie haben Ihre App bereits autorisiert sofort aus dem Login-Flow mit einem aktualisierten Token zurück in Ihre App umzuleiten - je nachdem, welche Art von Login-Flow Sie verwenden, hängt dies von der Person ab. Wenn Sie zum Beispiel das JavaScript-SDK verwenden, findet dies in Der Hintergrund, wenn Sie einen serverseitigen Flow verwenden, wird der Browser schnell zum Login-Dialog und dann automatisch und sofort wieder zurück zu Ihrer App umleiten.

    
Mikko Johansson 06.12.2015 23:34
quelle