Łączenie aplikacji z Firebase
Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.
Dodawanie Firebase Authentication do aplikacji
W pliku Gradle modułu (na poziomie aplikacji) (zwykle
<project>/<app-module>/build.gradle.kts
lub<project>/<app-module>/build.gradle
) dodaj zależność z biblioteką Firebase Authentication na Androida. Zalecamy używanie Firebase Android BoM do kontrolowania wersji biblioteki.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.7.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
Gdy korzystasz z Firebase Android BoM, aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.
(Alternatywnie) Dodaj zależności biblioteki Firebase bez używania pakietu BoM
Jeśli zdecydujesz się nie używać Firebase BoM, musisz podać każdą wersję biblioteki Firebase w jej wierszu zależności.
Jeśli w aplikacji używasz kilku bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek. Dzięki temu wszystkie wersje będą ze sobą zgodne.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:23.1.0") }
Aby korzystać z dostawcy uwierzytelniania, musisz go włączyć w konsoli Firebase. Otwórz stronę Metoda logowania w sekcji Firebase Authentication, aby włączyć logowanie za pomocą adresu e-mail i hasła oraz innych dostawców tożsamości, których chcesz używać w aplikacji.
(Opcjonalnie) Prototypowanie i testowanie za pomocą Firebase Local Emulator Suite
Zanim omówimy sposób uwierzytelniania użytkowników w aplikacji, przedstawimy zestaw narzędzi, których możesz używać do tworzenia prototypów i testowania funkcji Authentication:Firebase Local Emulator Suite. Jeśli zastanawiasz się, którą technikę uwierzytelniania i którego dostawcę wybrać, testując różne modele danych z danymi publicznymi i prywatnymi za pomocą funkcji Authentication i Firebase Security Rules lub prototypując interfejs logowania, warto pracować lokalnie bez wdrażania usług na żywo.
Emulator Authentication jest częścią Local Emulator Suite, która umożliwia aplikacji interakcję z emulowaną zawartością i konfiguracją bazy danych, a także opcjonalnie z emulowanymi zasobami projektu (funkcjami, innymi bazami danych i regułami zabezpieczeń).
Korzystanie z emulatora Authentication wymaga wykonania kilku czynności:
- Dodanie linii kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
- W katalogu głównym lokalnego katalogu projektu uruchom
firebase emulators:start
. - Korzystanie z interfejsu Local Emulator Suite do tworzenia interaktywnych prototypów lub interfejsu API REST emulatora Authentication do testów nieinterakcyjnych.
Szczegółowy przewodnik znajdziesz w artykule Łączenie aplikacji z emulatorem Authentication. Więcej informacji znajdziesz w wprowadzeniu.Local Emulator Suite
Teraz zajmijmy się uwierzytelnianiem użytkowników.
Sprawdzanie bieżącego stanu uwierzytelniania
Zadeklaruj instancję klasy
FirebaseAuth
.Kotlin
private lateinit var auth: FirebaseAuth
Java
private FirebaseAuth mAuth;
W metodzie
onCreate()
zainicjuj wystąpienieFirebaseAuth
.Kotlin
// Initialize Firebase Auth auth = Firebase.auth
Java
// Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
Podczas inicjowania aktywności sprawdź, czy użytkownik jest zalogowany.
Kotlin
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if (currentUser != null) { reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
Rejestrowanie nowych użytkowników
Utwórz nową metodę createAccount
, która przyjmuje adres e-mail i hasło, weryfikuje je, a następnie tworzy nowego użytkownika za pomocą metody createUserWithEmailAndPassword
.
Kotlin
auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
Dodaj formularz rejestracji nowych użytkowników z ich adresem e-mail i hasłem oraz wywołaj tę nową metodę po przesłaniu formularza. Przykład znajdziesz w pliku Quickstart Sample.
Logowanie dotychczasowych użytkowników
Utwórz nową metodę signIn
, która przyjmuje adres e-mail i hasło, weryfikuje je, a następnie loguje użytkownika za pomocą metody signInWithEmailAndPassword
.
Kotlin
auth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
Dodaj formularz, aby użytkownicy mogli się logować za pomocą adresu e-mail i hasła, a następnie wywołaj tę nową metodę po przesłaniu formularza. Przykład znajdziesz w pliku przykładowym dla początkujących.
Dostęp do informacji o użytkownikach
Jeśli użytkownik zaloguje się na konto, możesz w dowolnym momencie uzyskać dane jego konta, korzystając z metody getCurrentUser
.
Kotlin
val user = Firebase.auth.currentUser user?.let { // Name, email address, and profile photo Url val name = it.displayName val email = it.email val photoUrl = it.photoUrl // Check if user's email is verified val emailVerified = it.isEmailVerified // The user's ID, unique to the Firebase project. Do NOT use this value to // authenticate with your backend server, if you have one. Use // FirebaseUser.getIdToken() instead. val uid = it.uid }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { // Name, email address, and profile photo Url String name = user.getDisplayName(); String email = user.getEmail(); Uri photoUrl = user.getPhotoUrl(); // Check if user's email is verified boolean emailVerified = user.isEmailVerified(); // The user's ID, unique to the Firebase project. Do NOT use this value to // authenticate with your backend server, if you have one. Use // FirebaseUser.getIdToken() instead. String uid = user.getUid(); }
Następne kroki
Zapoznaj się z poniższymi przewodnikami dotyczącymi dodawania innych usług identyfikacji i uwierzytelniania: