Erste Schritte mit Firebase Authentication auf Apple-Plattformen

Mit Firebase Authentication können Sie Nutzern erlauben, sich mit einer oder mehreren Anmeldemethoden in Ihrer App anzumelden, einschließlich der Anmeldung mit E-Mail-Adresse und Passwort sowie föderierter Identitätsanbieter wie Google Log-in und Facebook Log-in. In dieser Anleitung erfahren Sie, wie Sie mit Firebase Authentication loslegen und Ihrer App die Anmeldung per E-Mail-Adresse und Passwort hinzufügen.

App mit Firebase verbinden

  1. Installieren Sie das Firebase SDK.
  2. Fügen Sie die App in der Firebase Console Ihrem Firebase-Projekt hinzu.

Firebase Authentication zu Ihrer App hinzufügen

Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.

  1. Öffnen Sie Ihr App-Projekt und gehen Sie in Xcode zu File > Add Packages (Datei > Pakete hinzufügen).
  2. Fügen Sie bei entsprechender Aufforderung das Firebase Apple Platforms SDK-Repository hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wählen Sie die Bibliothek Firebase Authentication aus.
  5. Fügen Sie das Flag -ObjC im Abschnitt Other Linker Flags (Weitere Verknüpfungsmerker) der Build-Einstellungen des Ziels hinzu.
  6. Wenn Sie fertig, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.

Optional: Prototyp erstellen und mit Firebase Local Emulator Suite testen

Bevor wir uns damit befassen, wie Nutzer in Ihrer App authentifiziert werden, stellen wir Ihnen einige Tools vor, mit denen Sie Authentication-Funktionen prototypisieren und testen können: Firebase Local Emulator Suite. Wenn Sie sich zwischen Authentifizierungstechniken und ‑anbietern entscheiden, verschiedene Datenmodelle mit öffentlichen und privaten Daten mithilfe von Authentication und Firebase Security Rules ausprobieren oder Prototyping-UI-Designs für die Anmeldung erstellen, kann es sehr hilfreich sein, lokal arbeiten zu können, ohne Live-Dienste bereitzustellen.

Ein Authentication-Emulator ist Teil des Local Emulator Suite. Er ermöglicht es Ihrer App, mit emulierten Datenbankinhalten und ‑konfigurationen sowie optional mit Ihren emulierten Projektressourcen (Funktionen, anderen Datenbanken und Sicherheitsregeln) zu interagieren.

Die Verwendung des Authentication-Emulators ist ganz einfach:

  1. Fügen Sie der Testkonfiguration Ihrer App eine Codezeile hinzu, um eine Verbindung zum Emulator herzustellen.
  2. Führen Sie firebase emulators:start im Stammverzeichnis Ihres lokalen Projektverzeichnisses aus.
  3. Verwenden Sie die Local Emulator Suite-Benutzeroberfläche für interaktives Prototyping oder die Authentication-Emulator-REST API für nicht interaktive Tests.

Eine ausführliche Anleitung finden Sie unter App mit dem Authentication-Emulator verbinden. Weitere Informationen finden Sie in der Local Emulator SuiteEinführung.

Fahren wir nun mit der Authentifizierung von Nutzern fort.

Firebase SDK initialisieren

Importieren Sie zuerst das Firebase SDK in Ihrem App-Delegate:

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

Initialisieren Sie dann in der application:didFinishLaunchingWithOptions:-Methode das FirebaseApp-Objekt:

Swift

// Use Firebase library to configure APIs
FirebaseApp.configure()

Objective-C

// Use Firebase library to configure APIs
[FIRApp configure];

Auf Authentifizierungsstatus warten

Fügen Sie für jede Ansicht Ihrer App, für die Informationen zum angemeldeten Nutzer erforderlich sind, dem FIRAuth-Objekt einen Listener hinzu. Dieser Listener wird jedes Mal aufgerufen, wenn sich der Anmeldestatus des Nutzers ändert.

Hängen Sie den Listener in der viewWillAppear-Methode des View Controllers an:

Swift

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

Objective-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

Trennen Sie den Listener in der viewWillDisappear-Methode des View-Controllers:

Swift

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Neue Nutzer registrieren

Erstellen Sie ein Formular, mit dem sich neue Nutzer mit ihrer E-Mail-Adresse und einem Passwort in Ihrer App registrieren können. Wenn ein Nutzer das Formular ausfüllt, validiere die von ihm angegebene E-Mail-Adresse und das Passwort und leite sie dann an die Methode createUser weiter:

Swift

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

Objective-C

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

Vorhandene Nutzer anmelden

Erstellen Sie ein Formular, mit dem sich bestehende Nutzer mit ihrer E-Mail-Adresse und ihrem Passwort anmelden können. Rufen Sie die Methode signIn auf, wenn ein Nutzer das Formular ausgefüllt hat:

Swift

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

Objective-C

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

Nutzerinformationen abrufen

Nachdem sich ein Nutzer erfolgreich angemeldet hat, können Sie Informationen über ihn abrufen. Beispielsweise in deinem Listener für den Authentifizierungsstatus:

Swift

if let user = user {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  let uid = user.uid
  let email = user.email
  let photoURL = user.photoURL
  var multiFactorString = "MultiFactor: "
  for info in user.multiFactor.enrolledFactors {
    multiFactorString += info.displayName ?? "[DispayName]"
    multiFactorString += " "
  }
  // ...
}

Objective-C

if (user) {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  NSString *email = user.email;
  NSString *uid = user.uid;
  NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
  for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
    [multiFactorString appendString:info.displayName];
    [multiFactorString appendString:@" "];
  }
  NSURL *photoURL = user.photoURL;
  // ...
}

Nächste Schritte

So fügen Sie Unterstützung für andere Identitätsanbieter und anonyme Gastkonten hinzu: