Anonyme Authentifizierung bei Apple-Plattformen mit Firebase

Mit Firebase Authentication können Sie temporäre anonyme Konten erstellen und verwenden, um sich bei Firebase zu authentifizieren. Mit diesen temporären anonymen Konten können Nutzer, die sich noch nicht in Ihrer App registriert haben, mit Daten arbeiten, die durch Sicherheitsregeln geschützt sind. Wenn sich ein anonymer Nutzer für Ihre App registriert, können Sie seine Anmeldedaten mit dem anonymen Konto verknüpfen, damit er in zukünftigen Sitzungen weiterhin mit seinen geschützten Daten arbeiten kann.

Hinweis

  1. 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 Bereich Other Linker Flags (Andere Linker-Flags) der Build-Einstellungen Ihres Ziels hinzu.
    6. Wenn Sie fertig, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.
  2. Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verknüpft haben, können Sie das in der Firebase-Konsole tun.
  3. Anonyme Authentifizierung aktivieren:
    1. Rufen Sie in der Firebase-Konsole Sicherheit > Authentifizierung auf.
    2. Aktivieren Sie auf dem Tab Anmeldemethode den Anonymen Anmeldeanbieter.
    3. Optional: Wenn Sie Ihr Projekt auf Firebase Authentication with Identity Platform aktualisiert haben, können Sie die automatische Bereinigung aktivieren. Wenn Sie diese Einstellung aktivieren, werden anonyme Konten, die älter als 30 Tage sind, automatisch gelöscht. In Projekten mit aktivierter automatischer Bereinigung wird die anonyme Authentifizierung nicht mehr auf Nutzungslimits oder Abrechnungskontingente angerechnet. Weitere Informationen finden Sie unter Automatische Bereinigung.

Anonyme Authentifizierung bei Firebase

Wenn ein nicht angemeldeter Nutzer eine App-Funktion verwendet, die eine Authentifizierung mit Firebase erfordert, melden Sie den Nutzer anonym an. Gehen Sie dazu so vor:

  1. Importieren Sie das FirebaseCore-Modul in Ihre UIApplicationDelegate sowie alle anderen Firebase-Module, die Ihr App-Delegat verwendet. Beispiel für die Verwendung von Cloud Firestore und Authentication:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Konfigurieren Sie in der Methode application(_:didFinishLaunchingWithOptions:) des App-Delegats eine freigegebene FirebaseApp-Instanz:

    SwiftUI

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

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Wenn Sie SwiftUI verwenden, müssen Sie ein App-Delegat erstellen und es über UIApplicationDelegateAdaptor oder NSApplicationDelegateAdaptor an Ihr App-Struct anhängen. Außerdem müssen Sie das Swizzling des App-Delegaten deaktivieren. Weitere Informationen finden Sie in der SwiftUI-Anleitung.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. Rufen Sie die Methode signInAnonymouslyWithCompletion: auf.

    Swift

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }

    Objective-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
  5. Wenn die Methode signInAnonymouslyWithCompletion: ohne Fehler abgeschlossen wird, können Sie die Kontodaten des anonymen Nutzers aus dem FIRAuthDataResult-Objekt abrufen:

    Swift

    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid

    Objective-C

    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;

Anonymes Konto in ein dauerhaftes Konto umwandeln

Wenn sich ein anonymer Nutzer in Ihrer App registriert, möchten Sie ihm möglicherweise erlauben, seine Arbeit mit seinem neuen Konto fortzusetzen. Sie können beispielsweise die Artikel, die der Nutzer vor der Registrierung in seinen Einkaufswagen gelegt hat, im Einkaufswagen seines neuen Kontos verfügbar machen. Führen Sie dazu folgende Schritte aus:

  1. Wenn sich der Nutzer registriert, schließen Sie den Anmeldevorgang für den Authentifizierungsanbieter des Nutzers ab, rufen Sie jedoch keine der FIRAuth.signInWith-Methoden auf. Rufen Sie beispielsweise das Google-ID-Token, das Facebook-Zugriffstoken oder die E-Mail-Adresse und das Passwort des Nutzers ab.
  2. Rufen Sie ein FIRAuthCredential für den neuen Authentifizierungsanbieter ab:

    Google Log-in
    Swift
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    Objective-C
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString
                                     accessToken:result.user.accessToken.tokenString];
    Facebook-Anmeldung
    Swift
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    Objective-C
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    Anmeldung mit E‑Mail-Adresse und Passwort
    Swift
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    Objective-C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
  3. Übergebe das FIRAuthCredential-Objekt an die linkWithCredential:completion:-Methode des angemeldeten Nutzers:

    Swift
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    Objective-C
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];

Wenn der Aufruf von linkWithCredential:completion: erfolgreich ist, kann das neue Konto des Nutzers auf die Firebase-Daten des anonymen Kontos zugreifen.

Automatische Bereinigung

Wenn Sie Ihr Projekt auf Firebase Authentication with Identity Platform aktualisiert haben, können Sie die automatische Bereinigung in der Firebase-Konsole aktivieren. Wenn Sie diese Funktion aktivieren, erlauben Sie Firebase, anonyme Konten, die älter als 30 Tage sind, automatisch zu löschen. In Projekten mit aktivierter automatischer Bereinigung wird die anonyme Authentifizierung nicht auf Nutzungslimits oder Abrechnungskontingente angerechnet.

  • Alle anonymen Konten, die nach dem Aktivieren der automatischen Bereinigung erstellt werden, können jederzeit nach 30 Tagen nach der Erstellung automatisch gelöscht werden.
  • Bestehende anonyme Konten können 30 Tage nach Aktivierung der automatischen Bereinigung automatisch gelöscht werden.
  • Wenn Sie die automatische Bereinigung deaktivieren, bleiben alle anonymen Konten, die zum Löschen vorgemerkt sind, weiterhin zum Löschen vorgemerkt.
  • Wenn Sie ein anonymes Konto „upgraden“, indem Sie es mit einer Anmeldemethode verknüpfen, wird das Konto nicht automatisch gelöscht.

Wenn Sie vor dem Aktivieren dieser Funktion sehen möchten, wie viele Nutzer betroffen sind, und Sie ein Upgrade Ihres Projekts auf Firebase Authentication with Identity Platform durchgeführt haben, können Sie in Cloud Logging nach is_anon filtern.

Nächste Schritte

Da sich Nutzer jetzt mit Firebase authentifizieren können, können Sie ihren Zugriff auf Daten in Ihrer Firebase-Datenbank mithilfe von Firebase-Regeln steuern.