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 za pomocą C++

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

  1. Dodaj Firebase do swojego projektu C++ .
  2. Jeśli aplikacja nie została jeszcze połączona z projektem Firebase, zrób to z konsoli Firebase .
  3. Włącz uwierzytelnianie anonimowe:
    1. W konsoli Firebase otwórz sekcję Auth .
    2. Na stronie Metody logowania włącz metodę logowania anonimowego .
    3. Opcjonalnie : po uaktualnieniu projektu do Uwierzytelniania Firebase za pomocą Identity Platform możesz włączyć 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:

Klasa Auth jest bramą dla wszystkich wywołań API.
  1. Dodaj pliki nagłówkowe Auth i App:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. W kodzie inicjującym utwórz klasę firebase::App .
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. Uzyskaj klasę firebase::auth::Auth dla swojej firebase::App . Istnieje mapowanie jeden do jednego między App i Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Wywołaj Auth::SignInAnonymously .
    firebase::Future<firebase::auth::User*> result = auth->SignInAnonymously();
    
  • Jeśli Twój program ma pętlę aktualizacji, która działa regularnie (powiedzmy 30 lub 60 razy na sekundę), możesz sprawdzić wyniki raz na aktualizację za pomocą Auth::SignInAnonymouslyLastResult :
    firebase::Future<firebase::auth::User*> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::User* user = *result.result();
        printf("Sign in succeeded for `%s`\n", user->display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    Lub, jeśli Twój program jest sterowany zdarzeniami, możesz preferować aby zarejestrować oddzwonienie w przyszłości .
  • 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 Auth::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 auth::Credential dla nowego dostawcy uwierzytelniania:

      Logowanie do Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Logowanie do Facebooka
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      E-mail-hasło logowanie
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. Przekaż obiekt auth::Credential do metody LinkWithCredential użytkownika logującego się:

      // Link the new credential to the currently active user.
      firebase::auth::User* current_user = auth->current_user();
      firebase::Future<firebase::auth::User*> result =
          current_user->LinkWithCredential(credential);
      

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

    Automatyczne czyszczenie

    Jeśli Twój projekt został uaktualniony do Uwierzytelniania Firebase za pomocą Identity Platform , możesz włączyć automatyczne czyszczenie w konsoli Firebase. Gdy włączysz tę funkcję, na to zezwolisz, Firebase automatycznie usunie anonimowe konta starsze niż 30 dni. 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 mogą zostać automatycznie usunięte w dowolnym momencie po 30 dniach od utworzenia.
    • Konta anonimowe utworzone przed włączeniem automatycznego czyszczenia będą kwalifikować się do automatycznego usuwania począwszy od 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. Konta te nie wliczają się do limitów użytkowania ani limitów rozliczeniowych.
    • 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 .