Możesz używać Firebase Authentication do tworzenia i używania tymczasowych kont anonimowych do uwierzytelniania w Firebase. Tych tymczasowych kont anonimowych można używać, aby umożliwić użytkownikom, którzy nie zarejestrowali się jeszcze w aplikacji, 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ł w przyszłości nadal pracować z chronionymi danymi.
Zanim zaczniesz
- Dodaj Firebase do projektu C++.
- Jeśli nie masz jeszcze połączenia aplikacji z projektem w Firebase, zrób to w Firebase konsoli.
- Włącz anonimowe uwierzytelnianie:
- W Firebasekonsoli otwórz sekcję Uwierzytelnianie.
- Na stronie Metody logowania włącz metodę logowania Anonimowe.
- Opcjonalnie: jeśli Twój projekt został przeniesiony na wyższy abonament Firebase Authentication with Identity Platform, możesz włączyć automatyczne czyszczenie. Gdy włączysz to ustawienie, anonimowe konta założone ponad 30 dni temu będą automatycznie usuwane. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie już wliczane do limitów wykorzystania ani limitów płatności. Zobacz Automatyczne czyszczenie.
Anonimowe uwierzytelnianie w Firebase
Gdy wylogowany użytkownik korzysta z funkcji aplikacji, która wymaga uwierzytelniania w Firebase, zaloguj go anonimowo, wykonując te czynności:
KlasaAuth jest bramą dla wszystkich wywołań interfejsu API.
- Dodaj pliki nagłówkowe Auth i App:
#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 dostęp do zajęć
firebase::auth::Authdlafirebase::App. Istnieje bezpośrednie powiązanie międzyAppaAuth.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()); } }
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. Możesz na przykład sprawić, że produkty dodane przez użytkownika do koszyka na zakupy przed rejestracją będą dostępne w koszyku na zakupy na nowym koncie. Aby to zrobić, wykonaj te czynności:
- Gdy użytkownik się zarejestruje, dokończ proces logowania w przypadku dostawcy uwierzytelniania użytkownika, ale nie wywołuj żadnej z metod
Auth::SignInWith. Możesz na przykład uzyskać token identyfikatora Google użytkownika, token dostępu do Facebooka lub adres e-mail i hasło. Uzyskaj
Logowanie przez Googleauth::Credentialdla nowego dostawcy uwierzytelniania: Logowanie przez Facebookafirebase::auth::Credential credential = firebase::auth::GoogleAuthProvider::GetCredential(google_id_token, nullptr);
Logowanie za pomocą adresu e-mail i hasłafirebase::auth::Credential credential = firebase::auth::FacebookAuthProvider::GetCredential(access_token);
firebase::auth::Credential credential = firebase::auth::EmailAuthProvider::GetCredential(email, password);
Przekaż obiekt
auth::Credentialdo metodyLinkWithCredentialuż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 się powiedzie, nowe konto użytkownika będzie mogło uzyskać dostęp do danych Firebase konta anonimowego.
Automatyczne oczyszczanie
Jeśli Twój projekt został przeniesiony na wyższy abonament Firebase Authentication with Identity Platform, możesz włączyć automatyczne czyszczenie w konsoli Firebase. Gdy włączysz tę funkcję, zezwolisz Firebase na automatyczne usuwanie anonimowych kont starszych niż 30 dni. W projektach z włączonym automatycznym czyszczeniem anonimowe uwierzytelnianie nie będzie wliczane do limitów wykorzystania ani 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 konta anonimowe będą kwalifikować się do automatycznego usunięcia po 30 dniach od włączenia automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie anonimowe konta zaplanowane do usunięcia pozostaną zaplanowane do usunięcia.
- Jeśli „uaktualnisz” anonimowe konto, łącząc je z dowolną metodą logowania, nie zostanie ono automatycznie usunięte.
Jeśli przed włączeniem tej funkcji chcesz sprawdzić, ilu użytkowników to dotyczy, a Twój projekt został uaktualniony do Firebase Authentication with Identity Platform, możesz filtrować według is_anon w Cloud Logging.
Dalsze 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.