Uwierzytelniaj w Firebase anonimowo za pomocą C++

Firebase Authentication 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 .

Zanim zaczniesz

  1. Dodaj Firebase do swojego C++ projekt.
  2. Jeśli Twoja aplikacja nie jest jeszcze połączona z projektem Firebase, zrób to na stronie konsolę 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 Firebase Authentication with 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:

Klasa Auth jest bramą dla wszystkich wywołań interfejsu API.
  1. Dodaj pliki nagłówka Auth i App:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. W kodzie inicjowania utwórz 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 zajęcia firebase::auth::Auth związane z urządzeniem firebase::App. Między App a Auth występuje mapowanie 1:1.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Zadzwoń pod numer Auth::SignInAnonymously.
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymously();
    
  • Jeśli Twój program ma pętlę aktualizacji, która działa regularnie (np. przy 30 lub 60 sekundzie) razy na sekundę), możesz sprawdzić wyniki raz na każdą aktualizację, 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());
      }
    }
    
    A jeśli Twój program jest oparty na zdarzeniach, możesz preferować zarejestruj się na oddzwonienie Przyszłość.
  • 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 Auth::SignInWith metody. Na przykład możesz uzyskać token identyfikatora Google użytkownika, Token dostępu Facebooka lub adres e-mail i hasło.
    2. Pobierz auth::Credential dla nowego dostawcy uwierzytelniania:

      Logowanie przez 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);
      
      Logowanie się przy użyciu adresu e-mail i hasła
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. Przekaż obiekt auth::Credential do folderu zalogowanego użytkownika Metoda LinkWithCredential:

      // 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 się powiedzie, nowe konto użytkownika będzie mogło uzyskać dostęp do danych Firebase anonimowego konta.

    Czyszczenie automatyczne

    Po przeniesieniu projektu do Firebase Authentication with 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 projekt został uaktualniony do Firebase Authentication with Identity Platform, możesz filtrować według tych kryteriów: is_anon w 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.