Uwierzytelnij się anonimowo w Firebase, używając C++

Możesz użyć uwierzytelniania Firebase, aby utworzyć tymczasowe konta anonimowe i używać ich do uwierzytelniania w Firebase. Za pomocą tych tymczasowych anonimowych kont użytkownicy, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, mogą pracować z danymi chronionymi regułami bezpieczeństwa. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz powiązać jego dane 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 jeszcze nie połączyłeś aplikacji z projektem Firebase, zrób to z konsoli Firebase .
  3. Włącz anonimową autoryzację:
    1. W konsoli Firebase otwórz sekcję Uwierzytelnianie .
    2. Na stronie Metody logowania włącz metodę logowania anonimowego .
    3. Opcjonalnie : jeśli zaktualizowałeś swój projekt do uwierzytelniania Firebase z platformą tożsamości , możesz włączyć automatyczne czyszczenie. Po włączeniu tego ustawienia anonimowe konta starsze niż 30 dni zostaną automatycznie usunięte. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie już wliczane do limitów użytkowania ani przydziałów rozliczeniowych. Zobacz Automatyczne czyszczenie .

Uwierzytelnij się anonimowo w Firebase

Gdy niezalogowany użytkownik korzysta z funkcji aplikacji wymagającej uwierzytelniania w Firebase, zaloguj się anonimowo, wykonując następujące kroki:

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. Zdobądź klasę firebase::auth::Auth dla swojej firebase::App . Istnieje mapowanie jeden do jednego pomiędzy App i Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Zadzwoń do Auth::SignInAnonymously .
    firebase::Future<firebase::auth::AuthResult> 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::AuthResult> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::AuthResult auth_result = *result.result();
        printf("Sign in succeeded for `%s`\n",
               auth_result.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ć wywołanie zwrotne w przyszłości .
  • Zamień 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 udostępnić na nowym koncie pozycje, które użytkownik dodał do koszyka przed rejestracją. koszyk konta. Aby to zrobić, wykonaj następujące kroki:

    1. Gdy użytkownik zarejestruje się, wykonaj 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 Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Logowanie przez Facebook
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      E-mail-hasło logowania
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. Przekaż obiekt auth::Credential do metody LinkWithCredential zalogowanego użytkownika:

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

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

    Automatyczne czyszczenie

    Jeśli zaktualizowałeś swój projekt do uwierzytelniania Firebase z platformą tożsamości , możesz włączyć automatyczne czyszczenie w konsoli Firebase. Po włączeniu tej funkcji zezwalasz Firebase na automatyczne usuwanie anonimowych kont starszych niż 30 dni. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie wliczane do limitów użytkowania ani przydziałów rozliczeniowych.

    • Wszelkie anonimowe konta utworzone po włączeniu automatycznego czyszczenia mogą zostać automatycznie usunięte w dowolnym momencie po 30 dniach od ich utworzenia.
    • Istniejące anonimowe konta będą kwalifikowały się do automatycznego usunięcia 30 dni po włączeniu automatycznego czyszczenia.
    • Jeśli wyłączysz automatyczne czyszczenie, wszystkie anonimowe konta zaplanowane do usunięcia pozostaną zaplanowane do usunięcia.
    • Jeśli „uaktualnisz” konto anonimowe, łącząc je z dowolną metodą logowania, konto nie zostanie automatycznie usunięte.

    Jeśli przed włączeniem tej funkcji chcesz sprawdzić, ilu użytkowników będzie to dotyczyć, a Twój projekt został uaktualniony do uwierzytelniania Firebase z platformą tożsamości , 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 .