Pierwsze kroki z Uwierzytelnianiem Firebase na Androidzie

Łączenie aplikacji z Firebase

Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu na Androida.

Dodaj Firebase Authentication do swojej aplikacji

  1. 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ą Firebase Authentication na Androida. Zalecamy użycie metody Firebase Android BoM aby kontrolować obsługę wersji biblioteki.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.2.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")
    }
    

    Korzystając z narzędzia Firebase Android BoM, Twoja aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.

    (Wersja alternatywna) Dodaj zależności biblioteki Firebase bez użycia komponentu BoM

    Jeśli nie chcesz używać biblioteki 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 temu wszystkie wersje są 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.0.0")
    }
    
    Szukasz modułu biblioteki korzystającego z usługi Kotlin? Zaczyna się za Październik 2023 r. (Firebase BoM 32.5.0) zarówno programiści Kotlin, jak i Java zależą od modułu biblioteki głównej (więcej informacji znajdziesz w Najczęstsze pytania na temat tej inicjatywy).

  2. Aby używać dostawcy uwierzytelniania, musisz go włączyć w Firebase. W aplikacji Firebase Authentication otwórz stronę Metoda logowania. aby włączyć logowanie za pomocą adresu e-mail/hasło oraz innych dostawców tożsamości dla swojej aplikacji.

(Opcjonalnie) Prototypowanie i testowanie przy użyciu Firebase Local Emulator Suite

Zanim przejdziemy do omówienia sposobu uwierzytelniania użytkowników przez Twoją aplikację, narzędzia służące do prototypowania i testowania funkcji Authentication: Firebase Local Emulator Suite Jeśli zastanawiasz się nad techniką uwierzytelniania i usługodawcom, testując różne modele danych z wykorzystaniem danych publicznych i prywatnych przy użyciu interfejsów Authentication i Firebase Security Rules, lub tworzy prototypy interfejsu logowania, pracować lokalnie bez wdrażania usług w czasie rzeczywistym.

Emulator Authentication jest częścią modułu Local Emulator Suite, który umożliwia aplikacji interakcję z emulowaną treścią i konfiguracją bazy danych a także opcjonalnie emulowane zasoby projektu (funkcje, inne bazy danych, i reguły zabezpieczeń).

Aby użyć emulatora Authentication, wystarczy wykonać kilka czynności:

  1. Dodajesz wiersz kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
  2. Uruchomienie firebase emulators:start w katalogu głównym projektu lokalnego.
  3. Użycie interfejsu użytkownika Local Emulator Suite do interaktywnego prototypowania lub Interfejs API typu REST emulatora Authentication do testowania nieinteraktywnego.

Szczegółowy przewodnik znajdziesz w artykule Łączenie aplikacji z emulatorem Authentication. Więcej informacji znajdziesz we wprowadzeniu do Local Emulator Suite.

Teraz przejdźmy do uwierzytelniania użytkowników.

Sprawdź bieżący stan uwierzytelniania

  1. Zadeklaruj wystąpienie elementu FirebaseAuth.

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth

    Java

    private FirebaseAuth mAuth;
  2. W metodzie onCreate() zainicjuj instancję FirebaseAuth.

    Kotlin+KTX

    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  3. Zanim rozpoczniesz aktywność, sprawdź, czy użytkownik jest zalogowany cal

    Kotlin+KTX

    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();
        }
    }

Zarejestruj nowych użytkowników

Utwórz nową metodę createAccount, która pobiera adres e-mail i hasło. sprawdza je, a potem tworzy nowego użytkownika z createUserWithEmailAndPassword. .

Kotlin+KTX

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, aby zarejestrować nowych użytkowników, podając ich adres e-mail i hasło, i nazywać go nowym podczas przesyłania. Przykład znajdziesz w krótkiego wprowadzenia.

Logowanie istniejących użytkowników

Utwórz nową metodę signIn, która wymaga podania adresu e-mail i hasła. sprawdza ich poprawność, a potem loguje użytkownika Metoda signInWithEmailAndPassword.

Kotlin+KTX

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 logować użytkowników za pomocą ich adresu e-mail oraz hasła i nazywać go nowym podczas przesyłania. Przykład znajdziesz w krótkiego wprowadzenia.

Uzyskiwanie dostępu do informacji o użytkownikach

Jeśli użytkownik zalogował się, dane dotyczące jego konta można znaleźć na stronie w dowolnym punkcie metody getCurrentUser.

Kotlin+KTX

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 przewodnikami dotyczącymi dodawania innych usług tożsamości i uwierzytelniania: