Erste Schritte mit Firebase Authentication auf Apple-Plattformen

Mit Firebase Authentication können sich Nutzer mit einer oder mehreren Anmeldemethoden in Ihrer App anmelden, z. B. mit einer E-Mail-Adresse und einem Passwort oder über föderierte Identitätsanbieter wie Google Log-in und Facebook Login. In diesem Tutorial erfahren Sie, wie Sie Ihrer App die Anmeldung mit einer E-Mail-Adresse und einem Passwort hinzufügen.Firebase Authentication

App mit Firebase verbinden

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

Firebase Authentication zur 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 Firebase Authentication Bibliothek aus.
  5. Fügen Sie das Flag -ObjC im Bereich Other Linker Flags (Weitere Verknüpfungsmerker) der Build-Einstellungen Ihres Ziels hinzu.
  6. Wenn Sie fertig, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.

Optional: Prototyping und Tests mit Firebase Local Emulator Suite

Bevor wir uns ansehen, wie Ihre App Nutzer authentifiziert, stellen wir Ihnen eine Reihe von Tools vor, mit denen Sie die Prototypen erstellen und testen können Authentication Funktionalität: Firebase Local Emulator Suite. Wenn Sie sich zwischen verschiedenen Authentifizierungstechniken und ‑anbietern entscheiden, verschiedene Datenmodelle mit öffentlichen und privaten Daten mithilfe von Authentication und Firebase Security Rules testen oder UI-Designs für die Anmeldung prototypisieren möchten, kann es eine gute Idee sein, lokal zu arbeiten, ohne Live-Dienste bereitzustellen.

Ein Authentication Emulator ist Teil der Local Emulator Suite. Damit kann Ihre App mit emulierten Datenbankinhalten und ‑konfigurationen sowie optional mit den emulierten Projektressourcen (Funktionen, anderen Datenbanken und Sicherheitsregeln) interagieren.

Die Verwendung des Authentication Emulators umfasst nur wenige Schritte:

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

Eine detaillierte Anleitung finden Sie unter App mit dem Authentication Emulator verbinden. Weitere Informationen finden Sie in der Local Emulator Suite Einführung.

Sehen wir uns nun an, wie Sie Nutzer authentifizieren.

Firebase SDK initialisieren

Importieren Sie zuerst das Firebase SDK in Ihren App-Delegaten:

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

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

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, die Informationen zum angemeldeten Nutzer benötigt, dem Objekt FIRAuth einen Listener hinzu. Dieser Listener wird aufgerufen, wenn sich der Anmeldestatus des Nutzers ändert.

Fügen Sie den Listener in der Methode viewWillAppear des Ansichtscontrollers hinzu:

Swift

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

Objective-C

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

Entfernen Sie den Listener in der Methode viewWillDisappear des Ansichtscontrollers:

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, validieren Sie die vom Nutzer angegebene E-Mail-Adresse und das Passwort und übergeben Sie sie dann an die Methode createUser:

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 vorhandene Nutzer mit ihrer E-Mail-Adresse und ihrem Passwort anmelden können. Wenn ein Nutzer das Formular ausfüllt, rufen Sie die Methode signIn auf:

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 zu ihm abrufen. Beispiel: In Ihrem 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

Informationen zum Hinzufügen von Unterstützung für andere Identitätsanbieter und anonyme Gastkonten: