Dzięki Uwierzytelnianiu Firebase możesz tworzyć tymczasowe anonimowe konta i używać ich do uwierzytelniania w Firebase. Te tymczasowe anonimowe konta mogą umożliwiać użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, na pracę z danymi chronionymi przez reguły zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz połączyć jego dane logowania z anonimowym kontem, aby mógł nadal korzystać ze swoich chronionych danych w kolejnych sesjach.
Zanim zaczniesz
- Dodaj Firebase do projektu C++.
- Jeśli Twoja aplikacja nie jest jeszcze połączona z projektem Firebase, możesz to zrobić z poziomu konsoli Firebase.
- Włącz anonimowe uwierzytelnianie:
- W konsoli Firebase otwórz sekcję Uwierzytelnianie.
- Na stronie Metody logowania włącz metodę logowania Anonimowy.
- Opcjonalnie: jeśli Twój projekt został przeniesiony na Uwierzytelnianie Firebase na platformie Identity Platform, możesz włączyć automatyczne czyszczenie. Gdy włączysz to ustawienie, anonimowe konta starsze niż 30 dni będą automatycznie usuwane. W projektach z włączonym automatycznym czyszczeniem anonimowe uwierzytelnianie nie będzie już wliczane do limitów wykorzystania ani limitów płatności. Zobacz Automatyczne czyszczenie.
Uwierzytelniaj anonimowo w Firebase
Gdy wylogowany użytkownik używa funkcji aplikacji, która wymaga uwierzytelniania w Firebase, zaloguj się anonimowo, wykonując te czynności:
KlasaAuth
jest bramą dla wszystkich wywołań interfejsu API.
- Dodaj pliki nagłówka uwierzytelniania i aplikacji:
#include "firebase/app.h" #include "firebase/auth.h"
- W kodzie inicjowania 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__)
- Uzyskaj zajęcia
firebase::auth::Auth
związane z urządzeniemfirebase::App
. MiędzyApp
aAuth
występuje mapowanie 1:1.firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
Auth::SignInAnonymously
.
firebase::Future<firebase::auth::AuthResult> result = auth->SignInAnonymously();
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()); } }Jeśli Twój program jest oparty na zdarzeniach, możesz zarejestrować się oddzwonienie w przyszłości.
Przekształcanie konta anonimowego w konto stałe
Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz zezwolić mu na kontynuowanie pracy na nowym koncie – np. możesz udostępnić produkty dodane przez tego użytkownika do koszyka, zanim się zarejestruje w koszyku na nowe konto. Aby to zrobić:
- Gdy użytkownik się zarejestruje, przeprowadź proces logowania u dostawcy uwierzytelniania użytkownika aż do wywołania jednej z metod
Auth::SignInWith
(ale bez niego). Możesz na przykład uzyskać token identyfikatora Google użytkownika, token dostępu Facebooka lub adres e-mail i hasło. Pobierz
Logowanie przez Googleauth::Credential
dla nowego dostawcy uwierzytelniania:firebase::auth::Credential credential = firebase::auth::GoogleAuthProvider::GetCredential(google_id_token, nullptr);
Logowanie przez Facebookafirebase::auth::Credential credential = firebase::auth::FacebookAuthProvider::GetCredential(access_token);
Logowanie się za pomocą adresu e-mailfirebase::auth::Credential credential = firebase::auth::EmailAuthProvider::GetCredential(email, password);
Przekaż obiekt
auth::Credential
do metodyLinkWithCredential
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
się powiedzie, nowe konto użytkownika uzyska dostęp do danych Firebase tego konta anonimowego.
Czyszczenie automatyczne
Po uaktualnieniu projektu do Uwierzytelniania Firebase z Identity Platform możesz włączyć automatyczne czyszczenie w konsoli Firebase. Po włączeniu tej funkcji Firebase może automatycznie usuwać anonimowe konta starsze niż 30 dni. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe 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 usunięte w dowolnym momencie po 30 dniach od utworzenia.
- Istniejące anonimowe konta będą mogły zostać automatycznie usunięte po 30 dniach od włączenia automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie anonimowe konta przeznaczone do usunięcia pozostaną zaplanowane do usunięcia.
- Jeśli uaktualnisz konto anonimowe, łącząc je z dowolną metodą logowania, nie zostanie ono automatycznie usunięte.
Jeśli przed włączeniem tej funkcji chcesz sprawdzić, na ilu użytkowników ta funkcja będzie miała wpływ, i przeniesiesz swój projekt na Uwierzytelnianie Firebase na platformie Identity Platform, w Cloud Logging możesz filtrować według wartości is_anon
.
Dalsze kroki
Teraz, gdy użytkownicy mogą uwierzytelniać się w Firebase, możesz kontrolować ich dostęp do danych w Twojej bazie danych Firebase za pomocą reguł Firebase.