Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

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

Za pomocą Uwierzytelniania Firebase możesz tworzyć tymczasowe konta anonimowe i używać ich do uwierzytelniania w Firebase. Te tymczasowe konta anonimowe mogą służyć do umożliwienia użytkownikom, którzy jeszcze nie zarejestrowali się w Twojej aplikacji, pracy z danymi chronionymi przez reguły bezpieczeństwa. 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 podczas przyszłych sesji.

Zanim zaczniesz

  1. Dodaj Firebase do swojego projektu w C ++ .
  2. Jeśli nie połączyłeś jeszcze swojej aplikacji z projektem Firebase, zrób to z konsoli Firebase .
  3. Włącz anonimowe uwierzytelnianie:
    1. W konsoli Firebase otwórz sekcję Uwierzytelnianie .
    2. Na stronie Metody logowania włącz metodę logowania anonimowego .

Uwierzytelnij się anonimowo w Firebase

Gdy wylogowany użytkownik korzysta z funkcji aplikacji, która wymaga 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 uwierzytelniania i aplikacji:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. W swoim 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. firebase::auth::Auth klasę firebase::auth::Auth dla swojego firebase::App . Istnieje mapowanie jeden do jednego między App a Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Zadzwoń do 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 się zarejestrować oddzwonienie w sprawie przyszłości .
  • Zamień konto anonimowe na konto stałe

    Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz pozwolić mu kontynuować pracę na nowym koncie - na przykład możesz chcieć, aby produkty, które użytkownik dodał do koszyka przed zarejestrowaniem się, były dostępne w nowym koszyk na koncie. Aby to zrobić, wykonaj następujące czynności:

    1. Gdy użytkownik się zarejestruje, ukończ przepływ logowania dla dostawcy uwierzytelniania użytkownika, ale nie Auth::SignInWith , wywołując jedną z metod Auth::SignInWith . Na przykład uzyskaj token Google ID użytkownika, token dostępu do Facebooka lub adres e-mail i hasło.
    2. Uzyskaj auth::Credential dla nowego dostawcy uwierzytelniania:

      Logowanie przez Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Logowanie na Facebooku
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      Logowanie za pomocą hasła e-mail
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. Przekaż obiekt auth::Credential do metody LinkWithCredential użytkownika LinkWithCredential :

      // 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 LinkWithCredential anonimowego konta.

    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 .