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 Sie Nutzern, die sich noch nicht bei deiner App registriert haben, erlauben, mit geschützten Daten zu arbeiten durch Sicherheitsregeln. Wenn sich ein anonymer Nutzer in Ihrer 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 Firebase Authentication-Bibliothek aus.
    5. Fügen Sie das Flag -ObjC dem Bereich Other Linker Flags der Build-Einstellungen des 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 verbunden haben, tun Sie dies über Firebase-Konsole
  3. Anonyme Authentifizierung aktivieren:
    1. Öffnen Sie in der Firebase-Konsole den Abschnitt Auth.
    2. Aktivieren Sie auf der Seite Anmeldemethoden die Anmeldemethode Anonym.
    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:

Anonym mit Firebase authentifizieren

Wenn ein abgemeldeter Nutzer eine App-Funktion verwendet, für die eine Authentifizierung mit Firebase erforderlich ist, melden Sie ihn 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. So verwenden Sie beispielsweise 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 ein FirebaseApp freigegebene Instanz im Methode application(_:didFinishLaunchingWithOptions:):

    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 einen Anwendungsdelegierten erstellen und diesen anhängen. zu deiner App-Struktur über UIApplicationDelegateAdaptor oder NSApplicationDelegateAdaptor Außerdem müssen Sie das App-Delegate-Swizzling 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: können Sie die Kontodaten des anonymen Nutzers aus dem FIRAuthDataResult-Objekt:

    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;

Umwandlung eines anonymen Kontos in ein dauerhaftes Konto

Wenn sich ein anonymer Nutzer in Ihrer App registriert, können Sie ihm erlauben, seine Arbeit mit seinem neuen Konto fortzusetzen. Sie können beispielsweise die Artikel, die der Nutzer seinem Einkaufswagen hinzugefügt hat, bevor er sich registriert 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 das Authentifizierungsanbieter bis zum Aufrufen einer der FIRAuth.signInWith-Methoden. Rufe beispielsweise das Google-ID-Token, das Facebook-Zugriffstoken oder die E-Mail-Adresse und das Passwort des Nutzers ab.
  2. Rufen Sie eine 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-Passwort
    Swift
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    Objective-C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
  3. Übergeben Sie das FIRAuthCredential-Objekt an die Methode linkWithCredential:completion: 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 für Ihr Projekt ein Upgrade auf Firebase Authentication with Identity Platform durchgeführt haben, können Sie Aktivieren Sie die automatische Bereinigung in der Firebase-Konsole. Wenn Sie diese Funktion aktivieren, mit Firebase, um automatisch anonyme Konten zu löschen, die älter als 30 Tage sind. In Projekten mit automatischem Bereinigung aktiviert ist, wird die anonyme Authentifizierung nicht auf Nutzungslimits oder Abrechnungskontingente angerechnet.

  • Alle anonymen Konten, die nach der Aktivierung der automatischen Bereinigung erstellt wurden, werden möglicherweise automatisch werden 30 Tage nach der Erstellung gelöscht.
  • Bestehende anonyme Konten können nach 30 Tagen automatisch gelöscht werden. automatische Bereinigung aktivieren.
  • Wenn Sie die automatische Bereinigung deaktivieren, bleiben alle anonymen Konten, die zum Löschen geplant sind, weiterhin zum Löschen geplant.
  • Wenn Sie ein Upgrade ausführen ein anonymes Konto erstellt, indem es mit einer beliebigen Anmeldemethode verknüpft wird, wird das Konto werden nicht automatisch gelöscht.

Wenn Sie wissen möchten, wie viele Nutzer betroffen sind, Ihr Projekt auf Firebase Authentication with Identity Platform aktualisiert haben, können Sie filtern nach is_anon in Cloud Logging:

Nächste Schritte

Da sich Nutzer jetzt bei Firebase authentifizieren können, können Sie ihren Zugriff auf in Ihrer Firebase-Datenbank Firebase-Regeln