Uwierzytelniaj anonimowo za pomocą Firebase na platformach Apple

Uwierzytelnianie Firebase umożliwia tworzenie tymczasowych anonimowych kont i korzystanie z nich aby uwierzytelnić się w Firebase. Te tymczasowe anonimowe konta mogą być używane do: zezwalaj użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, na korzystanie z danych chronionych zgodnie z regułami zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz powiązać dane logowania z anonimowymi zasobami, konta, aby mogły nadal korzystać ze swoich danych chronionych kolejnych sesji.

Zanim zaczniesz

  1. Użyj menedżera pakietów Swift, aby zainstalować zależności Firebase i nimi zarządzać.

    1. W Xcode po otwarciu projektu aplikacji przejdź do File > Dodaj pakiety.
    2. Gdy pojawi się prośba, dodaj repozytorium SDK platform Apple Platform SDK Firebase:
    3.   https://github.com/firebase/firebase-ios-sdk.git
    4. Wybierz bibliotekę uwierzytelniania Firebase.
    5. Dodaj flagę -ObjC do sekcji Inne flagi łączące w ustawieniach kompilacji celu.
    6. Po zakończeniu Xcode automatycznie rozpocznie rozpoznawanie i pobieranie lub zależności w tle.
  2. Jeśli Twoja aplikacja nie jest jeszcze połączona z projektem Firebase, zrób to na stronie w konsoli Firebase.
  3. Włącz anonimowe uwierzytelnianie:
    1. W konsoli Firebase otwórz sekcję Uwierzytelnianie.
    2. Na stronie Sign-in Methods (Metody logowania) włącz Anonimowe metody logowania się.
    3. Opcjonalnie: jeśli Twój projekt został uaktualniony do wersji Uwierzytelnianie Firebase na platformie Identity Platform, możesz włączyć automatyczne czyszczenie. Kiedy jeśli włączysz to ustawienie, anonimowe konta starsze niż 30 dni będą automatycznie Usunięto. W projektach z włączonym automatycznym czyszczeniem anonimowe uwierzytelnianie nie będzie nie są już wliczane do limitów wykorzystania ani limitów rozliczeniowych. Zobacz Czyszczenie automatyczne.

Uwierzytelniaj anonimowo w Firebase

Gdy wylogowany użytkownik używa funkcji aplikacji, która wymaga uwierzytelnienia za pomocą Zaloguj się anonimowo w Firebase, wykonując te czynności:

  1. Zaimportuj moduł FirebaseCore do UIApplicationDelegate, jak i wszelkie inne Moduły Firebase używane przez przedstawiciela aplikacji. Aby na przykład użyć Cloud Firestore i Uwierzytelniania:

    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. Skonfiguruj FirebaseApp współdzielonej instancji w uprawnieniach przedstawiciela aplikacji Metoda 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. Jeśli używasz SwiftUI, musisz utworzyć i dołączyć przedstawiciela aplikacji. do struktury App za pomocą UIApplicationDelegateAdaptor lub NSApplicationDelegateAdaptor Musisz też wyłączyć przełączanie przekazywania dostępu do aplikacji. Dla: więcej informacji znajdziesz w instrukcjach SwiftUI.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. Wywołaj metodę signInAnonymouslyWithCompletion::

    Swift

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

    Objective-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  5. Jeśli zakończy się działanie metody signInAnonymouslyWithCompletion: bez błędu, można pobrać dane anonimowego konta użytkownika z Obiekt FIRAuthDataResult:

    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;
    

Przekształcanie konta anonimowego w konto stałe

Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz mu na to zezwolić kontynuowanie pracy na nowym koncie – np. Dodawaj produkty do koszyka, zanim użytkownik się zarejestrował dostępnych w koszyku na zakupy nowego konta. W tym celu wykonaj następujące czynności: kroki:

  1. Gdy użytkownik się zarejestruje, dokończ proces logowania na stronie do dostawcy uwierzytelniania do wywołania jednego z FIRAuth.signInWith. Na przykład pobierz token identyfikatora Google użytkownika, Token dostępu Facebooka lub adres e-mail i hasło.
  2. Pobierz FIRAuthCredential dla nowego dostawcy uwierzytelniania:

    Logowanie przez Google
    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];
    
    Logowanie do Facebooka
    Swift
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    
    Objective-C
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    Logowanie się za pomocą adresu e-mail
    Swift
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    Objective-C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. Przekaż obiekt FIRAuthCredential do folderu zalogowanego użytkownika Metoda linkWithCredential:completion::

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

Jeśli wywołanie linkWithCredential:completion: się powiedzie, nowe konto użytkownika będzie mogło uzyskać dostęp do danych Firebase anonimowego konta.

Czyszczenie automatyczne

Po przeniesieniu projektu do Uwierzytelniania Firebase na platformie Identity Platform możesz: włącz automatyczne czyszczenie w konsoli Firebase. Po włączeniu tej funkcji zezwalasz Firebase automatycznie usuwa anonimowe konta starsze niż 30 dni. W projektach z automatyczną włączone czyszczenie danych, anonimowe uwierzytelnianie nie jest wliczane do limitów wykorzystania ani limitów płatności.

  • Wszystkie anonimowe konta utworzone po włączeniu automatycznego czyszczenia mogą zostać automatycznie można usunąć w dowolnym momencie po 30 dniach od utworzenia.
  • Istniejące anonimowe konta będą mogły zostać automatycznie usunięte po 30 dniach włączenie automatycznego czyszczenia.
  • Jeśli wyłączysz automatyczne czyszczenie, wszystkie anonimowe konta przeznaczone do usunięcia pozostaną aktywne. do usunięcia.
  • Po przejściu na nową wersję anonimowe konto, łącząc je z dowolną metodą logowania, nie zostaną automatycznie usunięte.

Jeśli chcesz sprawdzić, ilu użytkowników wpłynie na to, zanim włączysz tę funkcję i uaktualnił swój projekt do Uwierzytelniania Firebase z Identity Platform, możesz filtrować według tych kryteriów is_anon w Google Cloud Logowanie.

Dalsze kroki

Teraz, gdy użytkownicy mogą uwierzytelniać się w Firebase, możesz kontrolować ich dostęp do w bazie danych Firebase za pomocą Reguły Firebase.