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 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 w przyszłych sesjach.
Zanim zaczniesz
- Dodaj Firebase do swojego projektu C++ .
- Jeśli aplikacja nie została jeszcze połączona z projektem Firebase, zrób to z konsoli Firebase .
- Włącz uwierzytelnianie anonimowe:
- W konsoli Firebase otwórz sekcję Auth .
- Na stronie Metody logowania włącz metodę logowania anonimowego .
- Opcjonalnie : po uaktualnieniu projektu do Uwierzytelniania Firebase za pomocą Identity Platform możesz włączyć automatyczne czyszczenie. Po włączeniu tego ustawienia anonimowe konta starsze niż 30 dni będą automatycznie usuwane. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie już wliczane do limitów użytkowania ani limitów rozliczeniowych. Zobacz Automatyczne czyszczenie .
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:
KlasaAuth
jest bramą dla wszystkich wywołań API.- Dodaj pliki nagłówkowe Auth i App:
#include "firebase/app.h" #include "firebase/auth.h"
- 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__)
- Uzyskaj klasę
firebase::auth::Auth
dla swojejfirebase::App
. Istnieje mapowanie jeden do jednego międzyApp
iAuth
.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()); } }Lub, jeśli Twój program jest sterowany zdarzeniami, możesz preferować aby zarejestrować oddzwonienie w przyszłości .
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:
- Gdy użytkownik się zarejestruje, zakończ 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. Uzyskaj
Logowanie do Googleauth::Credential
dla nowego dostawcy uwierzytelniania:firebase::auth::Credential credential = firebase::auth::GoogleAuthProvider::GetCredential(google_id_token, nullptr);
Logowanie do Facebookafirebase::auth::Credential credential = firebase::auth::FacebookAuthProvider::GetCredential(access_token);
E-mail-hasło logowaniefirebase::auth::Credential credential = firebase::auth::EmailAuthProvider::GetCredential(email, password);
Przekaż obiekt
auth::Credential
do metodyLinkWithCredential
użytkownika logującego się:// 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 może uzyskać dostęp do danych Firebase konta anonimowego.
Automatyczne czyszczenie
Jeśli Twój projekt został uaktualniony do Uwierzytelniania Firebase za pomocą Identity Platform , możesz włączyć automatyczne czyszczenie w konsoli Firebase. Gdy włączysz tę funkcję, na to zezwolisz, Firebase automatycznie usunie anonimowe konta starsze niż 30 dni. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie wliczane do limitów użytkowania ani limitów rozliczeniowych.
- Wszelkie anonimowe konta utworzone po włączeniu automatycznego czyszczenia mogą zostać automatycznie usunięte w dowolnym momencie po 30 dniach od utworzenia.
- Konta anonimowe utworzone przed włączeniem automatycznego czyszczenia będą kwalifikować się do automatycznego usuwania począwszy od 30 dni po włączeniu automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszelkie anonimowe konta zaplanowane do usunięcia pozostaną zaplanowane do usunięcia. Konta te nie wliczają się do limitów użytkowania ani limitów rozliczeniowych.
- Jeśli „uaktualnisz” anonimowe konto, łącząc je z dowolną metodą logowania, konto nie zostanie automatycznie usunięte.
Jeśli przed włączeniem tej funkcji chcesz zobaczyć, ilu użytkowników będzie mieć wpływ, a Twój projekt został uaktualniony do Uwierzytelniania Firebase za pomocą Identity Platform , 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 .