Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Authentifizieren Sie sich mit Firebase unter Android mithilfe eines benutzerdefinierten Authentifizierungssystems

Sie können die Firebase-Authentifizierung in ein benutzerdefiniertes Authentifizierungssystem integrieren, indem Sie Ihren Authentifizierungsserver so ändern, dass bei erfolgreicher Anmeldung eines Benutzers benutzerdefinierte signierte Token erstellt werden. Ihre App empfängt dieses Token und verwendet es zur Authentifizierung bei Firebase.

Bevor Sie beginnen

  1. Wenn Sie dies noch nicht getan haben, fügen Sie Firebase zu Ihrem Android-Projekt hinzu .
  2. Deklarieren Sie mithilfe der Firebase Android BoM die Abhängigkeit für die Firebase Authentication Android-Bibliothek in der Gradle-Datei Ihres Moduls (App-Ebene) (normalerweise app/build.gradle ).

    Java

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

    Bei Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.

    (Alternative) Deklarieren Sie Firebase-Bibliotheksabhängigkeiten, ohne die Stückliste zu verwenden

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass wir bei Verwendung mehrerer Firebase-Bibliotheken in Ihrer App die Verwendung der Stückliste zur Verwaltung von Bibliotheksversionen dringend empfehlen, um sicherzustellen, dass alle Versionen kompatibel sind.

    dependencies {
        // Declare 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:20.0.1'
    }
    

    Kotlin + KTX

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

    Bei Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.

    (Alternative) Deklarieren Sie Firebase-Bibliotheksabhängigkeiten ohne Verwendung der Stückliste

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass wir bei Verwendung mehrerer Firebase-Bibliotheken in Ihrer App die Verwendung der Stückliste zum Verwalten von Bibliotheksversionen dringend empfehlen, um sicherzustellen, dass alle Versionen kompatibel sind.

    dependencies {
        // Declare 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-ktx:20.0.1'
    }
    
  3. Holen Sie sich die Serverschlüssel Ihres Projekts:
    1. Gehen Sie auf die Dienstkonto Seite in Ihrer Projekteinstellung.
    2. Klicken Sie auf Erstellen eines neuen privaten Schlüssel auf der Unterseite des Firebase Admin SDK Abschnitt der Seite Dienstkonten.
    3. Das öffentliche / private Schlüsselpaar des neuen Dienstkontos wird automatisch auf Ihrem Computer gespeichert. Kopieren Sie diese Datei auf Ihren Authentifizierungsserver.

Mit Firebase authentifizieren

  1. onCreate Sie in der onCreate Methode Ihrer onCreate die gemeinsam genutzte Instanz des FirebaseAuth Objekts ab:

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin + KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  2. Überprüfen Sie beim Initialisieren Ihrer Aktivität, ob der Benutzer derzeit angemeldet ist:

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

    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)
    }
  3. Wenn sich Benutzer bei Ihrer App anmelden, senden Sie ihre Anmeldeinformationen (z. B. ihren Benutzernamen und ihr Kennwort) an Ihren Authentifizierungsserver. Ihr Server überprüft die Anmeldeinformationen und gibt ein benutzerdefiniertes Token zurück, wenn sie gültig sind.
  4. Nachdem Sie das benutzerdefinierte Token von Ihrem Authentifizierungsserver erhalten haben, übergeben Sie es an signInWithCustomToken , um den Benutzer signInWithCustomToken :

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

    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)
                    }
                }
    }
    Wenn die Anmeldung erfolgreich ist, AuthStateListener Sie mit dem getCurrentUser Methode getCurrentUser verwenden, um die Kontodaten des Benutzers getCurrentUser .

Nächste Schritte

Nachdem sich ein Benutzer zum ersten Mal angemeldet hat, wird ein neues Benutzerkonto erstellt und mit den Anmeldeinformationen verknüpft, dh dem Benutzernamen und dem Kennwort, der Telefonnummer oder den Informationen zum Authentifizierungsanbieter, mit denen sich der Benutzer angemeldet hat. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Benutzer in jeder App in Ihrem Projekt zu identifizieren, unabhängig davon, wie sich der Benutzer anmeldet.

  • In Ihren Apps können Sie die grundlegenden Profilinformationen des Benutzers aus dem FirebaseUser Objekt FirebaseUser . Siehe Benutzer verwalten .

  • In Ihren Firebase- Sicherheitsregeln für Echtzeitdatenbanken und Cloud-Speicher können Sie die eindeutige Benutzer-ID des angemeldeten Benutzers aus der auth und damit steuern, auf welche Daten ein Benutzer zugreifen kann.

Sie können Benutzern erlauben, sich mit mehreren Authentifizierungsanbietern bei Ihrer App anzumelden, indem Sie die Anmeldeinformationen des Authentifizierungsanbieters mit einem vorhandenen Benutzerkonto verknüpfen.

Um einen Benutzer signOut , rufen Sie signOut :

Java

FirebaseAuth.getInstance().signOut();

Kotlin + KTX

Firebase.auth.signOut()