Sie können Firebase Authentication in ein benutzerdefiniertes Authentifizierungssystem einbinden, indem Sie Ihren Authentifizierungsserver so ändern, dass er benutzerdefinierte signierte Tokens erstellt, wenn sich ein Nutzer erfolgreich anmeldet. Ihre App erhält dieses Token und verwendet es zur Authentifizierung bei Firebase.
Hinweis
- Falls noch nicht geschehen, fügen Sie Ihrem Android-Projekt Firebase hinzu.
-
Fügen Sie in der Gradle-Datei Ihres Moduls (auf App-Ebene)
(in der Regel
<project>/<app-module>/build.gradle.ktsoder<project>/<app-module>/build.gradle) die Abhängigkeit für die Firebase Authentication Bibliothek für Android hinzu. Wir empfehlen, die Firebase Android BoM zu verwenden, um die Bibliotheksversionierung zu steuern.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.11.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") }
Mit der Firebase Android BoM, haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.
(Alternative) Firebase-Bibliotheksabhängigkeiten ohne Verwendung der BoM
Wenn Sie die Firebase BoM nicht verwenden möchten, müssen Sie die Version jeder Firebase-Bibliothek in der entsprechenden Abhängigkeitszeile angeben.
Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zur Verwaltung der Bibliotheksversionen zu verwenden, um sicherzustellen, dass alle Versionen kompatibel sind.
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:24.0.1") }
- Serverschlüssel für Ihr Projekt abrufen:
- Rufen Sie in den Einstellungen Ihres Projekts die Seite Dienstkonten auf.
- Klicken Sie unten im Bereich Firebase Admin SDK der Seite Dienstkonten auf Neuen privaten Schlüssel generieren.
- Das öffentliche/private Schlüsselpaar des neuen Dienstkontos wird automatisch auf Ihrem Computer gespeichert. Kopieren Sie diese Datei auf Ihren Authentifizierungsserver.
Mit Firebase authentifizieren
- Rufen Sie in der
onCreateMethode Ihrer Anmeldeaktivität die freigegebene Instanz desFirebaseAuthObjekts ab:Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Prüfen Sie beim Initialisieren Ihrer Aktivität, ob der Nutzer derzeit angemeldet ist:
Kotlin
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); }
- Wenn sich Nutzer in Ihrer App anmelden, senden Sie ihre Anmeldedaten (z. B. Nutzername und Passwort) an Ihren Authentifizierungsserver. Ihr Server prüft die Anmeldedaten und gibt ein benutzerdefiniertes Token zurück, wenn sie gültig sind.
- Nachdem Sie das benutzerdefinierte Token von Ihrem Authentifizierungsserver erhalten haben, übergeben
Sie es an
signInWithCustomToken, um den Nutzer anzumelden:Wenn die Anmeldung erfolgreich ist, können Sie mit demKotlin
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); } } });
AuthStateListenerdie MethodegetCurrentUserverwenden, um die Kontodaten des Nutzers abzurufen.
Nächste Schritte
Wenn sich ein Nutzer zum ersten Mal anmeldet, wird ein neues Nutzerkonto erstellt und mit den Anmeldedaten verknüpft, mit denen sich der Nutzer angemeldet hat, z. B. Nutzername und Passwort, Telefonnummer oder Informationen zum Authentifizierungsanbieter. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Nutzer in allen Apps Ihres Projekts zu identifizieren, unabhängig davon, wie sich der Nutzer anmeldet.
-
In Ihren Apps können Sie die grundlegenden Profilinformationen des Nutzers aus dem
FirebaseUser-Objekt abrufen. Weitere Informationen finden Sie unter Nutzer verwalten. In den Firebase Realtime Database und Cloud Storage Sicherheitsregeln können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen
authabrufen und damit steuern, auf welche Daten ein Nutzer zugreifen kann.
Rufen Sie
signOut auf, um einen Nutzer abzumelden:
Kotlin
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();