Sie können die Firebase-Authentifizierung verwenden, um temporäre anonyme Konten für die Authentifizierung bei Firebase zu erstellen und zu verwenden. Diese temporären anonymen Konten können verwendet werden, um Benutzern, die sich noch nicht bei Ihrer App angemeldet haben, die Arbeit mit Daten zu ermöglichen, die durch Sicherheitsregeln geschützt sind. Wenn sich ein anonymer Benutzer dazu entschließt, sich bei Ihrer App anzumelden, können Sie seine Anmeldeinformationen mit dem anonymen Konto verknüpfen, damit er in zukünftigen Sitzungen weiterhin mit seinen geschützten Daten arbeiten kann.
Bevor Sie beginnen
Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.
- Navigieren Sie in Xcode bei geöffnetem App-Projekt zu File > Add Packages .
- Wenn Sie dazu aufgefordert werden, fügen Sie das Firebase Apple Platforms SDK-Repository hinzu:
- Wählen Sie die Firebase Authentication-Bibliothek.
- Fügen Sie das Flag
-ObjC
zum Abschnitt „Andere Linker-Flags“ der Build-Einstellungen Ihres Ziels hinzu. - Wenn Sie fertig sind, beginnt Xcode automatisch mit der Auflösung und dem Herunterladen Ihrer Abhängigkeiten im Hintergrund.
https://github.com/firebase/firebase-ios-sdk.git
Führen Sie als Nächstes einige Konfigurationsschritte durch:
- Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verbunden haben, tun Sie dies über die Firebase-Konsole .
- Anonyme Authentifizierung aktivieren:
- Öffnen Sie in der Firebase-Konsole den Abschnitt „Auth“ .
- Aktivieren Sie auf der Seite „Anmeldemethoden“ die Anmeldemethode „Anonym“ .
- Optional : 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. Siehe Automatische Bereinigung .
Authentifizieren Sie sich anonym bei Firebase
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:
- Importieren Sie das
FirebaseCore
Modul in IhrUIApplicationDelegate
sowie alle anderen Firebase-Module, die Ihr App-Delegierter verwendet. Um beispielsweise Cloud Firestore und Authentifizierung zu verwenden:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Schnell
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Ziel c
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurieren Sie eine gemeinsam genutzte
FirebaseApp
Instanz in derapplication(_:didFinishLaunchingWithOptions:)
Methode Ihres App-Delegierten:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Schnell
// Use Firebase library to configure APIs FirebaseApp.configure()
Ziel c
// Use Firebase library to configure APIs [FIRApp configure];
- Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegaten erstellen und ihn über
UIApplicationDelegateAdaptor
oderNSApplicationDelegateAdaptor
an IhreApp
Struktur anhängen. Sie müssen auch das Swizzling von App-Delegierten deaktivieren. Weitere Informationen finden Sie in den SwiftUI-Anweisungen .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Rufen Sie die Methode
signInAnonymouslyWithCompletion:
auf:Schnell
Auth.auth().signInAnonymously { authResult, error in // ... }
Ziel c
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- Wenn die Methode
signInAnonymouslyWithCompletion:
ohne Fehler abgeschlossen wird, können Sie die Kontodaten des anonymen Benutzers aus demFIRAuthDataResult
Objekt abrufen: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 permanentes 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:
- Wenn sich der Benutzer anmeldet, schließen Sie den Anmeldevorgang für den Authentifizierungsanbieter des Benutzers bis zum Aufruf einer der
FIRAuth.signInWith
Methoden ab, jedoch nicht einschließlich. Rufen Sie beispielsweise das Google-ID-Token, das Facebook-Zugriffstoken oder die E-Mail-Adresse und das Passwort des Benutzers ab. Rufen Sie ein
FIRAuthCredential
für den neuen Authentifizierungsanbieter ab: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
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString];
Facebook Login
Schnell
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
Ziel c
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
Anmeldung per E-Mail und Passwort
Schnell
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
Ziel c
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
Übergeben Sie das
FIRAuthCredential
Objekt an dielinkWithCredential:completion:
-Methode des angemeldeten Benutzers: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, kann das neue Konto des Benutzers auf die Firebase-Daten des anonymen Kontos zugreifen.
Automatische Bereinigung
Wenn Sie die automatische Bereinigung in der Firebase-Konsole aktivieren, werden anonyme Konten, die älter als 30 Tage sind, automatisch gelöscht. Wenn Sie diese Einstellung aktivieren, wird verhindert, dass Ihre Benutzerdatenbank mit ungenutzten Konten gefüllt wird. In Projekten mit aktivierter automatischer Bereinigung wird die anonyme Authentifizierung nicht auf Nutzungsbeschränkungen oder Abrechnungskontingente angerechnet.
- Alle anonymen Konten, die nach der Aktivierung der automatischen Bereinigung erstellt wurden, werden 30 Tage nach der Erstellung gelöscht.
- Anonyme Konten, die vor der Aktivierung der automatischen Bereinigung erstellt wurden, werden etwa 30 Tage nach der Aktivierung der automatischen Bereinigung gelöscht.
- Wenn Sie die automatische Bereinigung deaktivieren, bleibt die Löschung aller anonymen Konten, deren Löschung geplant ist, weiterhin geplant.
- Wenn Sie ein anonymes Konto „aktualisieren“, indem Sie es mit einer beliebigen Anmeldemethode verknüpfen, wird das Konto nicht automatisch gelöscht.
Wenn Sie sehen möchten, wie viele Benutzer betroffen sind, bevor Sie diese Funktion aktivieren, und Sie Ihr Projekt auf Firebase Authentication mit Identity Platform aktualisiert haben, können Sie in Cloud Logging nach is_anon
filtern.
Nächste Schritte
Da sich Benutzer nun bei Firebase authentifizieren können, können Sie ihren Zugriff auf Daten in Ihrer Firebase-Datenbank mithilfe von Firebase-Regeln steuern.