Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Uwierzytelniaj się w Firebase anonimowo na platformach Apple

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Za pomocą Uwierzytelniania Firebase możesz tworzyć tymczasowe konta anonimowe i używać ich do uwierzytelniania w Firebase. Te tymczasowe anonimowe konta mogą służyć do umożliwienia użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, pracy z danymi chronionymi przez reguły zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz połączyć jego poświadczenia logowania z anonimowym kontem , aby mógł kontynuować pracę z chronionymi danymi w przyszłych sesjach.

Zanim zaczniesz

Użyj Menedżera pakietów Swift, aby zainstalować i zarządzać zależnościami Firebase.

  1. W Xcode przy otwartym projekcie aplikacji przejdź do pliku > Dodaj pakiety .
  2. Po wyświetleniu monitu dodaj repozytorium SDK platformy Firebase Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Wybierz bibliotekę Uwierzytelniania Firebase.
  5. Po zakończeniu Xcode automatycznie rozpocznie rozwiązywanie i pobieranie zależności w tle.

Następnie wykonaj kilka czynności konfiguracyjnych:

  1. Jeśli aplikacja nie została jeszcze połączona z projektem Firebase, zrób to z konsoli Firebase .
  2. Włącz uwierzytelnianie anonimowe:
    1. W konsoli Firebase otwórz sekcję Auth .
    2. Na stronie Metody logowania włącz metodę logowania anonimowego .
    3. Opcjonalnie : włącz automatyczne czyszczenie. Po włączeniu tego ustawienia anonimowe konta starsze niż 30 dni będą automatycznie usuwane. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie już wliczane do limitów użytkowania ani limitów rozliczeniowych. Zobacz Automatyczne czyszczenie .

Uwierzytelnij się anonimowo w Firebase

Gdy wylogowany użytkownik korzysta z funkcji aplikacji wymagającej uwierzytelnienia w Firebase, zaloguj się anonimowo, wykonując następujące czynności:

  1. Zaimportuj moduł FirebaseCore do swojego UIApplicationDelegate , a także wszelkie inne moduły Firebase używane przez delegata aplikacji. Na przykład, aby użyć Cloud Firestore i uwierzytelniania:

    Szybki

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Cel C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Skonfiguruj współużytkowane wystąpienie FirebaseApp w metodzie application(_:didFinishLaunchingWithOptions:) delegata aplikacji:

    Szybki

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

    Cel C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Wywołaj metodę signInAnonymouslyWithCompletion: ::

    Szybki

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

    Cel C

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

    Szybki

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

    Cel C

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

Konwertuj konto anonimowe na konto stałe

Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz zezwolić mu na kontynuowanie pracy na nowym koncie — na przykład możesz chcieć, aby elementy dodane przez użytkownika do koszyka przed zarejestrowaniem się były dostępne w nowym koszyk konta. Aby to zrobić, wykonaj następujące czynności:

  1. Gdy użytkownik się zarejestruje, zakończ proces logowania dla dostawcy uwierzytelniania użytkownika, aż do wywołania jednej z metod FIRAuth.signInWith , ale nie w tym. Na przykład uzyskaj token identyfikatora Google użytkownika, token dostępu do Facebooka lub adres e-mail i hasło.
  2. Uzyskaj FIRAuthCredential dla nowego dostawcy uwierzytelniania:

    Logowanie przez Google
    Szybki
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    
    Cel C
    GIDAuthentication *authentication = user.authentication;
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
                                     accessToken:authentication.accessToken];
    
    Nazwa użytkownika Facebook
    Szybki
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    
    Cel C
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    E-mail-hasło logowania
    Szybki
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    Cel C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. Przekaż obiekt FIRAuthCredential do metody linkWithCredential:completion: logowania użytkownika:

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

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

Automatyczne czyszczenie

Po włączeniu automatycznego czyszczenia w konsoli Firebase anonimowe konta starsze niż 30 dni zostaną automatycznie usunięte. Włączenie tego ustawienia zapobiega zapełnianiu bazy danych użytkowników nieużywanymi kontami. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie wliczane do limitów użytkowania ani limitów rozliczeniowych.

  • Wszelkie anonimowe konta utworzone po włączeniu automatycznego czyszczenia zostaną usunięte 30 dni po utworzeniu.
  • Konta anonimowe utworzone przed włączeniem automatycznego czyszczenia zostaną usunięte około 30 dni po włączeniu automatycznego czyszczenia.
  • Jeśli wyłączysz automatyczne czyszczenie, wszelkie anonimowe konta zaplanowane do usunięcia pozostaną zaplanowane do usunięcia.
  • Jeśli „uaktualnisz” anonimowe konto, łącząc je z dowolną metodą logowania, konto nie zostanie automatycznie usunięte.

Jeśli przed włączeniem tej funkcji chcesz zobaczyć, ilu użytkowników będzie mieć wpływ, a Twój projekt został uaktualniony do Uwierzytelniania Firebase za pomocą Identity Platform , możesz filtrować według is_anon w Cloud Logging .

Następne kroki

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