
FirebaseUI ist eine Bibliothek, die auf dem Firebase Authentication SDK basiert und Drop-in-UI-Abläufe für die Verwendung in Ihrer App bietet. FirebaseUI bietet die folgenden Vorteile:
- Mehrere Anbieter: Anmeldeabläufe für E-Mail-Adresse/Passwort, E-Mail-Link, Telefonauthentifizierung, Google Log-in, Facebook-Anmeldung, Twitter-Anmeldung und GitHub-Anmeldung.
- Kontoverwaltung: Abläufe zur Verarbeitung von Kontoverwaltungsaufgaben wie Kontoerstellung und Zurücksetzen von Passwörtern.
- Kontoverknüpfung: Abläufe zum sicheren Verknüpfen von Nutzerkonten über Identitätsanbieter hinweg.
- Upgrade für anonyme Nutzer: Abläufe für das sichere Upgrade anonymer Nutzer.
- Benutzerdefinierte Designs: Sie können das Erscheinungsbild von FirebaseUI an Ihre App anpassen. Da FirebaseUI Open Source ist, können Sie das Projekt forken und genau an Ihre Anforderungen anpassen.
- Credential Manager – automatische Integration in Credential Manager für eine schnelle geräteübergreifende Anmeldung.
Hinweis
Falls noch nicht geschehen, fügen Sie Ihrem Android-Projekt Firebase hinzu.
Fügen Sie die Abhängigkeiten für FirebaseUI der Datei
build.gradle(.kts)auf App-Ebene hinzu. Wenn Sie die Anmeldung mit Facebook oder Twitter unterstützen möchten, fügen Sie auch die Facebook- und Twitter-SDKs hinzu:dependencies { // ... implementation("com.firebaseui:firebase-ui-auth:9.0.0") // Required only if Facebook login support is required // Find the latest Facebook SDK releases here: https://goo.gl/Ce5L94 implementation("com.facebook.android:facebook-android-sdk:8.x") }Das FirebaseUI Auth SDK hat transitive Abhängigkeiten vom Firebase SDK und vom Google Play-Dienste SDK.
Wechseln Sie in der Firebase-Konsole zu Sicherheit > Authentifizierung.
Aktivieren Sie auf dem Tab Anmeldemethode die Anbieter für Anmeldungen, die Sie unterstützen möchten. Für einige Anmeldeanbieter sind zusätzliche Informationen erforderlich, die in der Regel in der Entwicklerkonsole des Dienstes verfügbar sind.
Wenn Sie Google Log-in aktiviert haben:
Aktualisieren Sie Ihre Firebase-Konfigurationsdatei.
Laden Sie die aktualisierte Firebase-Konfigurationsdatei (
google-services.json) herunter, wenn Sie in der Firebase Console dazu aufgefordert werden. Sie enthält jetzt die OAuth-Clientinformationen, die für Google-Anmeldung erforderlich sind.Verschieben Sie diese aktualisierte Konfigurationsdatei in Ihr Android Studio-Projekt und ersetzen Sie die entsprechende Konfigurationsdatei, die jetzt veraltet ist. Weitere Informationen finden Sie unter Firebase zu Ihrem Android-Projekt hinzufügen.
Geben Sie den SHA-1-Fingerabdruck Ihrer App an, falls noch nicht geschehen.
Rufen Sie in der Firebase Console die
Einstellungen > Allgemein auf.Scrollen Sie nach unten zur Karte Meine Apps, wählen Sie Ihre Android-App aus und fügen Sie Ihren SHA-1-Fingerabdruck in das Feld Fingerabdrücke für SHA-Zertifikat ein.
Weitere Informationen zum Abrufen des SHA-Fingerabdrucks Ihrer App finden Sie unter Client authentifizieren.
Wenn Sie die Anmeldung mit Facebook oder Twitter unterstützen, fügen Sie
strings.xmlString-Ressourcen hinzu, in denen die von den einzelnen Anbietern benötigten Identifikationsinformationen angegeben sind:<resources> <!-- Facebook application ID and custom URL scheme (app ID prefixed by 'fb'). --> <string name="facebook_application_id" translatable="false">YOUR_APP_ID</string> <string name="facebook_login_protocol_scheme" translatable="false">fbYOUR_APP_ID</string> </resources>
Anmelden
Erstellen Sie ein ActivityResultLauncher, das einen Callback für den FirebaseUI-Activity-Ergebnisvertrag registriert:
Kotlin
// See: https://developer.android.com/training/basics/intents/result private val signInLauncher = registerForActivityResult( FirebaseAuthUIActivityResultContract(), ) { res -> this.onSignInResult(res) }
Java
// See: https://developer.android.com/training/basics/intents/result private final ActivityResultLauncher<Intent> signInLauncher = registerForActivityResult( new FirebaseAuthUIActivityResultContract(), new ActivityResultCallback<FirebaseAuthUIAuthenticationResult>() { @Override public void onActivityResult(FirebaseAuthUIAuthenticationResult result) { onSignInResult(result); } } );
Um den FirebaseUI-Anmeldevorgang zu starten, erstellen Sie einen Anmelde-Intent mit den gewünschten Anmeldemethoden:
Kotlin
// Choose authentication providers val providers = arrayListOf( AuthUI.IdpConfig.EmailBuilder().build(), AuthUI.IdpConfig.PhoneBuilder().build(), AuthUI.IdpConfig.GoogleBuilder().build(), AuthUI.IdpConfig.FacebookBuilder().build(), AuthUI.IdpConfig.TwitterBuilder().build(), ) // Create and launch sign-in intent val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build() signInLauncher.launch(signInIntent)
Java
// Choose authentication providers List<AuthUI.IdpConfig> providers = Arrays.asList( new AuthUI.IdpConfig.EmailBuilder().build(), new AuthUI.IdpConfig.PhoneBuilder().build(), new AuthUI.IdpConfig.GoogleBuilder().build(), new AuthUI.IdpConfig.FacebookBuilder().build(), new AuthUI.IdpConfig.TwitterBuilder().build()); // Create and launch sign-in intent Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build(); signInLauncher.launch(signInIntent);
Wenn der Anmeldevorgang abgeschlossen ist, erhalten Sie das Ergebnis in onSignInResult:
Kotlin
private fun onSignInResult(result: FirebaseAuthUIAuthenticationResult) { val response = result.idpResponse if (result.resultCode == RESULT_OK) { // Successfully signed in val user = FirebaseAuth.getInstance().currentUser // ... } else { // Sign in failed. If response is null the user canceled the // sign-in flow using the back button. Otherwise check // response.getError().getErrorCode() and handle the error. // ... } }
Java
private void onSignInResult(FirebaseAuthUIAuthenticationResult result) { IdpResponse response = result.getIdpResponse(); if (result.getResultCode() == RESULT_OK) { // Successfully signed in FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); // ... } else { // Sign in failed. If response is null the user canceled the // sign-in flow using the back button. Otherwise check // response.getError().getErrorCode() and handle the error. // ... } }
Anmeldemethoden einrichten
Authentifizierung über E-Mail-Link
Rufen Sie in der Firebase-Konsole Sicherheit > Authentifizierung auf.
Aktivieren Sie auf dem Tab Anmeldemethode die Anmeldemethode E-Mail/Passwort. Die Anmeldung mit E‑Mail-Adresse und Passwort muss aktiviert sein, damit die Anmeldung mit E‑Mail-Link verwendet werden kann.
Aktivieren Sie im selben Bereich die Anmeldemethode E-Mail-Link (Anmeldung ohne Passwort) und klicken Sie auf Speichern.
Außerdem müssen Sie Firebase Dynamic Links aktivieren, um die Anmeldung per E-Mail-Link zu verwenden:
Rufen Sie in der Firebase Console die Seite DevOps & Engagement > Dynamic Links auf.
Klicken Sie auf Jetzt starten und fügen Sie dann eine Domain hinzu. Die hier ausgewählte Domain wird in den E‑Mail-Links angezeigt, die an Ihre Nutzer gesendet werden.
Sie können die Anmeldung per E-Mail-Link in FirebaseUI aktivieren, indem Sie
enableEmailLinkSignInfür eineEmailBuilder-Instanz aufrufen. Außerdem müssen Sie ein gültigesActionCodeSettings-Objekt mitsetHandleCodeInAppauf „true“ festlegen.Außerdem müssen Sie die URL, die Sie an
setUrlübergeben, auf die Zulassungsliste setzen:Rufen Sie in der Firebase-Konsole den Tab Einstellungen unter Sicherheit > Authentifizierung auf.
Klicken Sie im Abschnitt Autorisierte Domains auf Domain hinzufügen und fügen Sie Ihre Domain hinzu.
Kotlin
val actionCodeSettings = ActionCodeSettings.newBuilder() .setAndroidPackageName( // yourPackageName= "...", // installIfNotAvailable= true, // minimumVersion= null, ) .setHandleCodeInApp(true) // This must be set to true .setUrl("https://google.com") // This URL needs to be whitelisted .build() val providers = listOf( EmailBuilder() .enableEmailLinkSignIn() .setActionCodeSettings(actionCodeSettings) .build(), ) val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build() signInLauncher.launch(signInIntent)
Java
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() .setAndroidPackageName( /* yourPackageName= */ "...", /* installIfNotAvailable= */ true, /* minimumVersion= */ null) .setHandleCodeInApp(true) // This must be set to true .setUrl("https://google.com") // This URL needs to be whitelisted .build(); List<AuthUI.IdpConfig> providers = Arrays.asList( new AuthUI.IdpConfig.EmailBuilder() .enableEmailLinkSignIn() .setActionCodeSettings(actionCodeSettings) .build() ); Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build(); signInLauncher.launch(signInIntent);
Wenn du den Link in einer bestimmten Aktivität erfassen möchtest, folge dieser Anleitung. Andernfalls wird der Link zu Ihrer Launcher-Aktivität weitergeleitet.
Sobald Sie den Deeplink abgefangen haben, müssen Sie bestätigen, dass wir ihn für Sie verarbeiten können. Wenn wir das können, müssen Sie es uns über
setEmailLinkzukommen lassen.Kotlin
if (AuthUI.canHandleIntent(intent)) { val extras = intent.extras ?: return val link = extras.getString("email_link_sign_in") if (link != null) { val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setEmailLink(link) .setAvailableProviders(providers) .build() signInLauncher.launch(signInIntent) } }
Java
if (AuthUI.canHandleIntent(getIntent())) { if (getIntent().getExtras() == null) { return; } String link = getIntent().getExtras().getString("email_link_sign_in"); if (link != null) { Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setEmailLink(link) .setAvailableProviders(providers) .build(); signInLauncher.launch(signInIntent); } }
Optional: Die Anmeldung über E-Mail-Links auf verschiedenen Geräten wird unterstützt. Das bedeutet, dass der über Ihre Android-App gesendete Link verwendet werden kann, um sich in Ihren Web- oder Apple-Apps anzumelden. Die Unterstützung für mehrere Geräte ist standardmäßig aktiviert. Sie können sie deaktivieren, indem Sie
setForceSameDevicefür dieEmailBuilder-Instanz aufrufen.Weitere Informationen finden Sie unter FirebaseUI-Web und FirebaseUI-iOS.
Abmelden
FirebaseUI bietet praktische Methoden zum Abmelden von Firebase Authentication und allen sozialen Identitätsanbietern:
Kotlin
AuthUI.getInstance() .signOut(this) .addOnCompleteListener { // ... }
Java
AuthUI.getInstance() .signOut(this) .addOnCompleteListener(new OnCompleteListener<Void>() { public void onComplete(@NonNull Task<Void> task) { // ... } });
Sie können das Konto des Nutzers auch vollständig löschen:
Kotlin
AuthUI.getInstance() .delete(this) .addOnCompleteListener { // ... }
Java
AuthUI.getInstance() .delete(this) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { // ... } });
Anpassung
Standardmäßig verwendet FirebaseUI AppCompat für das Design, sodass das Farbschema Ihrer App automatisch übernommen wird. Wenn Sie weitere Anpassungen vornehmen möchten, können Sie dem Intent-Builder für die Anmeldung ein Design und ein Logo übergeben:
Kotlin
val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setLogo(R.drawable.my_great_logo) // Set logo drawable .setTheme(R.style.MySuperAppTheme) // Set theme .build() signInLauncher.launch(signInIntent)
Java
Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setLogo(R.drawable.my_great_logo) // Set logo drawable .setTheme(R.style.MySuperAppTheme) // Set theme .build(); signInLauncher.launch(signInIntent);
Sie können auch eine benutzerdefinierte Datenschutzerklärung und benutzerdefinierte Nutzungsbedingungen festlegen:
Kotlin
val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setTosAndPrivacyPolicyUrls( "https://example.com/terms.html", "https://example.com/privacy.html", ) .build() signInLauncher.launch(signInIntent)
Java
Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setTosAndPrivacyPolicyUrls( "https://example.com/terms.html", "https://example.com/privacy.html") .build(); signInLauncher.launch(signInIntent);
Nächste Schritte
- Weitere Informationen zur Verwendung und Anpassung von FirebaseUI finden Sie in der README-Datei auf GitHub.
- Wenn Sie ein Problem in FirebaseUI finden und es melden möchten, verwenden Sie die GitHub-Problemverfolgung.