Uwierzytelniaj się w Firebase anonimowo za pomocą C++

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 użytkownik anonimowy postanawia zapisać się do swojej aplikacji, możesz połączyć swoje dane logowania do konta anonimowego , tak aby mogły kontynuować pracę z ich chronionych danych w przyszłych sesjach.

Zanim zaczniesz

  1. Dodaj Firebase do projektu C ++ .
  2. Jeśli nie zostały jeszcze podłączone swoją aplikację do projektu Firebase, zrobić z konsoli Firebase .
  3. Włącz uwierzytelnianie anonimowe:
    1. W konsoli Firebase otwórz sekcję Auth.
    2. Na stronie logowania w Methods, umożliwienie logowania metody Anonymous.

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:

Auth klasa jest bramą do wszystkich wywołań API.
  1. Dodaj pliki nagłówka uwierzytelniania i aplikacji:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. W kodzie inicjującym utwórz firebase::App klasy.
    #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. Nabyć firebase::auth::Auth klasę dla firebase::App . Istnieje odwzorowanie jeden do jednego między App i Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Zadzwoń Auth::SignInAnonymously .
    firebase::Future<firebase::auth::User*> result = auth->SignInAnonymously();
    
  • Jeśli program ma pętlę aktualizacji, który kursuje regularnie (powiedzmy na 30 lub 60 razy na sekundę), można sprawdzić wyniki raz w aktualizacji z 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 program jest sterowany zdarzeniami, może wolisz aby zarejestrować wywołania zwrotnego na przyszłość .
  • 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 up, ukończyć logowania przepływu dla dostawcy uwierzytelniania użytkownika zależy, ale nie w tym, nazywając jedną z Auth::SignInWith metod. Na przykład uzyskaj token identyfikatora Google użytkownika, token dostępu do Facebooka lub adres e-mail i hasło.
    2. Uzyskać auth::Credential dla nowego dostawcy uwierzytelniania:

      Google Sign-In
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Facebook login
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      E-hasło logowania
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. Przepuścić auth::Credential obiekt do logowania użytkownika LinkWithCredential metody:

      // 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, nowe konto użytkownika może uzyskać dostęp do konta anonimowego użytkownika dane Firebase.

    Następne kroki

    Teraz użytkownicy mogą uwierzytelniać z Firebase można kontrolować dostęp do danych w bazie danych Firebase zastosowaniem zasady Firebase .