Verwenden von Facebook Login mit vorhandenen Anmeldesystemen

Eventuell möchtest du in deinen Apps sowohl einen eigenen Login-Vorgang als auch Facebook Login anbieten. In diesem Leitfaden werden einige der Szenarien behandelt. Außerdem erhältst du Tipps, wie du mit solchen Apps eine gute Nutzererfahrung gewährleistest.

Übersicht

Du kannst dein eigenes Anmeldesystem implementieren, über das sich ein Nutzer bei der App mit seiner E-Mail-Adresse und seinem Passwort anmelden kann, um ein Konto zu erstellen. Apps führen dabei meistens eine Identitätsprüfung per E-Mail durch.

Alternativ kannst du auch Facebook Login als einziges Anmeldesystem verwenden. In diesem Fall meldet sich ein Nutzer mit Facebook Login bei deiner App an, erhält ein persönliches Konto, und Facebook kümmert sich um die Authentifizierung.

Es gibt jedoch auch Szenarien, in denen deine App mit komplexeren Situationen konfrontiert wird:

  • Ein Nutzer meldet sich bei deiner App mit seiner E-Mail-Adresse und seinem Passwort an, möchte aber später Facebook Login verwenden, um Daten von seinem Facebook-Konto abzurufen, in seine Chronik zu posten oder sich einfach in Zukunft damit anzumelden.
  • Ein Nutzer meldet sich bei der App mit seiner E-Mail-Adresse und seinem Passwort an, möchte sich aber später separat mit Facebook anmelden. In diesem Leitfaden gehen wir davon aus, dass es sich bei der zuerst angegebenen E-Mail-Adresse und bei der primären E-Mail-Adresse, die mit dem Facebook-Konto des Nutzers verknüpft ist, um ein und dieselbe E-Mail-Adresse handelt.
  • Ein Nutzer meldet sich über Facebook Login bei der App an, möchte sich aber später bei diesem Konto mit seiner E-Mail-Adresse und seinem Passwort anmelden.

In diesem Leitfaden geben wir die unserer Meinung nach besten Lösungsvorschläge für diese Situationen an.

Verbinden von Facebook Login mit einem bereits angemeldeten Konto

In diesem Abschnitt behandeln wir den Fall, dass ein Nutzer ein Konto über das benutzerdefinierte Anmeldesystem der App erstellt. Zu einem späteren Zeitpunkt, während er noch immer angemeldet ist, möchte er dieses Konto mit seinem Facebook-Konto verbinden. Ein Nutzer kann sich beispielsweise bei Spotify mit seiner E-Mail-Adresse und seinem Passwort anmelden, sich aber später dazu entscheiden, das Konto über Facebook Login mit seinem Facebook-Konto zu verbinden, z. B., wenn er die Lieder, die er sich anhört, in seiner Chronik posten möchte.

1. Füge deiner App einen Facebook Login-Vorgang hinzu

Lies dir unsere Leitfäden zum Verwenden eines Facebook Login-Vorgangs in deiner App durch, um diesen Schritt abzuschließen. Im Spotify-Beispiel wird der Facebook Login-Vorgang bis zu dem Punkt in der App ausgeführt, an dem der Nutzer angibt, dass er die Lieder, die er sich angehört hat, gerne posten möchte. Du kannst dem Nutzer auch die explizite Option zum Verbinden des Kontos mit seinem Facebook-Kontos anbieten.

2. Verbinde die Kontoinformationen

Nachdem sich ein Nutzer bei deiner App über dein eigenes Anmeldesystem angemeldet hat und danach den Facebook Login-Vorgang abschließt, muss deine App zwei wichtige Elemente miteinander verbinden:

  • das von der App erstellte Konto
  • Facebook-Informationen, die das Facebook-Konto des Nutzers identifizieren

Bei den meisten Apps wird das ursprüngliche Konto in einer Datenbanktabelle gespeichert. Am einfachsten ist es also, die Facebook-Kontoinformationen mit dem Konto in der Datenbank zu assoziieren.

Im Regelfall ist es besser, eine neue Tabelle zu erstellen, in der du die Facebook-Kontoinformationen des Nutzers speicherst. Der Vorteil einer separaten Tabelle gegenüber dem Ansatz, deiner bestehenden Kontotabelle immer mehr Spalten hinzuzufügen, besteht darin, dass du so in Zukunft schnell andere OAuth-Kontoanmeldungen unterstützen kannst.

Wenn sich derselbe Nutzer in Zukunft bei deiner App anmeldet, kannst du die Informationen in der Datenbank abgleichen und eine der beiden Methoden zur nahtlosen Anmeldung verwenden.

Zusammenführen separat erstellter Konten mit Facebook Login

In diesem Fall hat sich ein Nutzer mit seinen eigenen Anmeldedaten, wie z. B. E-Mail-Adresse und Passwort, bei deiner App angemeldet. Nachdem sich der Nutzer später abgemeldet hat, möchte er sich erneut bei deiner App anmelden – dieses Mal aber über Facebook Login. Deine App verfügt nun über zwei Konten für denselben Nutzer. Einer wurde über das App-Anmeldesystem erstellt, das andere über den Facebook Login-Vorgang. Um dem Nutzer die bestmögliche Nutzererfahrung zu bieten, sollte deine App versuchen, diese beiden Konten zusammenzuführen.

In diesem Leitfaden gehen wir davon aus, dass jedem Konto, das von deiner App erstellt wurde, eine E-Mail-Adresse zugeordnet wurde. Es ist jedoch möglich, dass der Nutzer sein bestehendes Konto mit einer anderen E-Mail-Adresse erstellt hat als der, die seinem Facebook-Konto zugeordnet ist. In diesem Fall solltest du Nutzern eine explizite Option zur Kontozusammenführung in deiner App anbieten, damit sie selbst die zwei separaten Konten angeben können, die sie miteinander zusammenführen möchten.
Das gilt auch, wenn zu deinen eigenen in der App erstellten Konten keine E-Mail-Adressen gespeichert werden.

1. Ändere deinen Facebook Login-Vorgang so, dass die E-Mail-Berechtigungen angefordert werden

Wenn das individuelle Anmeldesystem deiner App jedes Konto mit einer E-Mail-Adresse eindeutig identifiziert, solltest du auch während des Facebook Login-Vorgangs die E-Mail-Adresse des Nutzers anfordern (über die email-Berechtigung). Lies dir unseren Leitfaden zum Anfordern von Berechtigungen durch, um herauszufinden, wie du dabei am besten vorgehst.

2. Führe das Facebook Login-Konto mit dem App-Konto zusammen

Nachdem sich ein Nutzer erfolgreich mit Facebook angemeldet hat, hast du seine E-Mail-Adresse, seine Facebook-ID und seinen Zugriffsschlüssel. Deine App sollte nach einem bestehenden Konto suchen, das mit derselben E-Mail-Adresse erstellt wurde. Wenn eines vorhanden ist, solltest du die beiden Konten zusammenführen und die Facebook-Informationen dem bestehenden Konto hinzufügen, so wie oben empfohlen.

Melde die Person dann einfach ganz normal an.

Wenn du keinen Eintrag mit dieser E-Mail-Adresse in deiner Datenbank finden kannst, dann ist der Nutzer vermutlich neu.

Hinzufügen manueller Anmeldeinformationen zu einem Konto mit Facebook Login

Dieser Fall tritt auf, wenn ein Nutzer sein Konto in deiner App über Facebook Login erstellt, sich aber später mit seinen eigenen Anmeldedaten, inklusive Passwort, bei diesem Konto anmelden möchte. Netflix beispielsweise hat eine Web-App, die sowohl Facebook Login als auch ein reguläres Anmeldesystem verwendet, und eine Xbox-360-App, bei der Nutzer nur das reguläre Anmeldesystem verwenden können.

1. Stelle sicher, dass die Facebook Login-E-Mail-Adresse geprüft wurde

Wenn du Konten ausschließlich über die zugeordnete E-Mail-Adresse identifizierst, sollte deine App überprüfen, ob die E-Mail-Adresse, die dem Facebook-Konto des Nutzers zugeordnet ist (und beim Facebook Login-Vorgang bezogen wird), auch gültig ist. Füge deiner App dazu einfach den entsprechenden Code hinzu, um eine Verifizierungs-E-Mail an die E-Mail-Adresse zu senden, die du beim Facebook Login-Vorgang erhalten hast (du wirst diesen Schritt für dein reguläres Anmeldesystem vermutlich ohnehin benötigen).

2. Fordere den Nutzer auf, ein neues Passwort (und andere Anmeldedaten) festzulegen

Nachdem du die E-Mail-Adresse geprüft hast, kannst du den Nutzer jetzt dazu auffordern, ein Passwort festzulegen. Damit lässt du ihn wissen, dass er sich in Zukunft mit seiner E-Mail-Adresse und seinem Passwort bei deiner App anmelden kann. Nachdem du die Angaben erhalten hast, kannst du sie in deiner Datenbank an dem Ort speichern, an dem du auch die Kontoinformationen speicherst.

Wenn das Anmeldesystem deiner App keine E-Mail-Adressen zur Identifizierung verwendet, sondern nutzergenerierte Angaben wie z. B. einen Nutzernamen, solltest du den Nutzer dazu auffordern, auch diese Daten zusammen mit dem Passwort anzugeben.

Nutzer könnten auch erwarten, dass die Verbindung ihres Anmeldekontos und ihres Facebook-Kontos über deine App wieder aufgehoben werden kann. Dazu müssen dann nur die Facebook-Informationen des jeweiligen Nutzers aus der Kontodatenbank entfernt werden.