Catch up on everthing we announced at this year's Firebase Summit. Learn more

Anonyme Authentifizierung mit Firebase auf Apple-Plattformen

Sie können Firebase Authentication verwenden, um temporäre anonyme Konten zu erstellen und zu verwenden, um sich bei Firebase zu authentifizieren. Diese temporären anonymen Konten können verwendet werden, um Benutzern, die sich noch nicht bei Ihrer App angemeldet haben, zu ermöglichen, mit Daten zu arbeiten, die durch Sicherheitsregeln geschützt sind. Wenn ein anonymer Benutzer zu Ihrer App , um sich entscheidet, können Sie ihre Anmelde-Link Anmeldeinformationen an das anonyme Konto , so dass sie auf der Arbeit mit den geschützten Daten in zukünftigen Sitzungen fortgesetzt werden kann.

Bevor Sie beginnen

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

  1. In Xcode, mit Ihrem App - Projekt zu öffnen, navigieren Sie zu Datei> Swift Packages> Paket hinzufügen Abhängigkeit.
  2. Wenn Sie dazu aufgefordert werden, fügen Sie das SDK-Repository der Firebase Apple Platforms hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Wählen Sie die Firebase Authentication-Bibliothek aus.
  5. Wenn Sie fertig sind, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.

Führen Sie als Nächstes einige Konfigurationsschritte aus:

  1. Wenn Sie noch nicht Ihre App auf Ihr Projekt verbunden Firebase, tun Sie dies aus der Firebase Konsole .
  2. Anonyme Authentifizierung aktivieren:
    1. In der Firebase Konsole , öffnen Sie den Abschnitt Auth.
    2. Auf der Sign-in Methods Seite, aktivieren Sie die Anonymous-Anmeldung Methode.

Anonym bei Firebase authentifizieren

Wenn ein abgemeldeter Benutzer eine App-Funktion verwendet, die eine Authentifizierung bei Firebase erfordert, melden Sie den Benutzer anonym an, indem Sie die folgenden Schritte ausführen:

  1. Importieren Sie die Firebase Modul in Ihrem UIApplicationDelegate :

    Schnell

    import Firebase

    Ziel c

    @import Firebase;
  2. Konfigurieren ein FirebaseApp gemeinsame Instanz, in der Regel in Ihrem App - application:didFinishLaunchingWithOptions: Methode:

    Schnell

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

    Ziel c

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Rufen Sie die signInAnonymouslyWithCompletion: Methode:

    Schnell

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

    Ziel c

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  4. Wenn die signInAnonymouslyWithCompletion: Verfahren abgeschlossen ist, ohne Fehler, können Sie die anonymen Benutzerkontodaten aus dem bekommen FIRAuthDataResult Objekt:

    Schnell

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

    Ziel c

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

Wandeln Sie ein anonymes Konto in ein dauerhaftes Konto um

Wenn sich ein anonymer Benutzer bei Ihrer App anmeldet, möchten Sie ihm möglicherweise erlauben, seine Arbeit mit seinem neuen Konto fortzusetzen. Sie möchten beispielsweise die Artikel, die der Benutzer vor der Anmeldung in seinen Warenkorb gelegt hat, in seinem neuen Konto verfügbar machen Warenkorb des Kontos. Führen Sie dazu die folgenden Schritte aus:

  1. Wenn sich der Benutzer anmeldet, füllen Sie das Anmelde-Flow für den Authentifizierungsanbieter des Benutzers bis zu, aber nicht einschließlich, einer der Aufruf FIRAuth.signInWith Methoden. Rufen Sie beispielsweise das Google-ID-Token des Benutzers, das Facebook-Zugriffstoken oder die E-Mail-Adresse und das Passwort ab.
  2. Holen Sie sich einen FIRAuthCredential für die neuen Authentifizierungsanbieter:

    Google-Anmeldung
    Schnell
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    
    Ziel c
    GIDAuthentication *authentication = user.authentication;
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
                                     accessToken:authentication.accessToken];
    
    Facebook Login
    Schnell
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    
    Ziel c
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    E-Mail-Passwort-Anmeldung
    Schnell
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    Ziel c
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. Übergeben des FIRAuthCredential Objekt zu dem Anmelde-Benutzer linkWithCredential:completion: Methode:

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

Wenn der Aufruf von linkWithCredential:completion: erfolgreich ist , können Sie das neue Konto des Benutzers zuzugreifen die Firebase Daten über den anonymen Konto.

Nächste Schritte

Nun , da Benutzer mit Firebase authentifizieren können, können Sie ihren Zugang zu den Daten in Ihrer Firebase - Datenbank steuern Regeln Firebase .