Uwierzytelnianie Firebase możesz zintegrować z niestandardowym systemem uwierzytelniania przez modyfikowanie serwera uwierzytelniania w celu tworzenia niestandardowych podpisanych tokenów, udało się zalogować. Twoja aplikacja otrzymuje ten token i używa go do uwierzytelniania za pomocą Firebase.
Zanim zaczniesz
- Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu na Androida.
-
w pliku Gradle (na poziomie aplikacji) modułu,
(zwykle
<project>/<app-module>/build.gradle.kts
lub<project>/<app-module>/build.gradle
), dodaj zależność z biblioteką uwierzytelniania Firebase na Androida. Zalecamy użycie metody Funkcja BoM Firebase na Androida aby kontrolować obsługę wersji biblioteki.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.1.2")) // 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") }
Korzystając z BM Firebase Android BoM, Twoja aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.
(Wersja alternatywna) Dodawanie zależności biblioteki Firebase bez korzystania z BM
Jeśli nie chcesz używać Firebase BoM, musisz określić każdą wersję biblioteki Firebase w wierszu zależności.
Pamiętaj, że jeśli używasz wielu bibliotek Firebase w swojej aplikacji, zalecamy korzystanie z BoM do zarządzania wersjami biblioteki, dzięki czemu wszystkie wersje
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.0.0") }
- Pobierz klucze serwera projektu:
- Otwórz Konta usługi. w ustawieniach projektu.
- Kliknij Wygeneruj nowy klucz prywatny na dole Sekcja Firebase Admin SDK na stronie Konta usługi.
- Para kluczy publiczny/prywatny nowego konta usługi jest automatycznie zapisane na komputerze. Skopiuj ten plik na serwer uwierzytelniania.
Uwierzytelnij za pomocą Firebase
- W ramach aktywności związanej z logowaniem w ramach metody
onCreate
pobierz udostępnione wystąpienia obiektuFirebaseAuth
:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Zanim rozpoczniesz aktywność, sprawdź, czy użytkownik jest obecnie zalogowany:
Kotlin+KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
- Gdy użytkownicy logują się w Twojej aplikacji, wyślij swoje dane logowania (na przykład (np. nazwę użytkownika i hasło) na Twój serwer uwierzytelniania. Twoje serwer sprawdza dane logowania i zwraca token niestandardowy czy są prawidłowe.
- Po otrzymaniu niestandardowego tokena z serwera uwierzytelniania przekaż
do
signInWithCustomToken
w celu zalogowania użytkownika:Kotlin+KTX
customToken?.let { auth.signInWithCustomToken(it) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCustomToken:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCustomToken:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } } }
Java
mAuth.signInWithCustomToken(mCustomToken) .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, "signInWithCustomToken:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCustomToken:failure", task.getException()); Toast.makeText(CustomAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
AuthStateListener
możesz użyćgetCurrentUser
, aby pobrać dane konta użytkownika.
Dalsze kroki
Gdy użytkownik zaloguje się po raz pierwszy, tworzone jest nowe konto użytkownika. powiązane z danymi logowania, czyli z nazwą użytkownika, hasłem i numerem telefonu, numer telefonu lub informacje o dostawcy uwierzytelniania – użytkownik zalogowany. Ten nowy jest przechowywane w ramach projektu Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od tego, jak się loguje.
-
W swoich aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z
FirebaseUser
. Zobacz Zarządzanie użytkownikami. W Bazie danych czasu rzeczywistego Firebase i Cloud Storage reguł zabezpieczeń, możesz pobierz ze zmiennej
auth
unikalny identyfikator zalogowanego użytkownika, i używać ich do kontrolowania, do jakich danych użytkownik ma dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji przy użyciu wielokrotnego uwierzytelniania. dostawców, łącząc dane logowania dostawcy uwierzytelniania z istniejącego konta użytkownika.
Aby wylogować użytkownika, wywołaj
signOut
:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();