FirebaseUI ist eine Bibliothek, die zusätzlich zum Firebase Authentication SDK, das Drop-in-UI-Abläufe für die Verwendung bereitstellt. in Ihrer App. FirebaseUI bietet folgende Vorteile:
- Mehrere Anbieter – Anmeldeverfahren für E-Mail-Adresse/Passwort, E-Mail-Link, Telefon Authentication, Google Log-in, Facebook Login, Twitter Login und GitHub Login.
- Kontoverwaltung: Abläufe zur Verwaltung von Kontoaufgaben wie Kontoerstellung und Passwort zurücksetzen.
- Kontoverknüpfung: Abläufe zur sicheren Verknüpfung von Nutzerkonten identitätsübergreifend Anbieter.
- Upgrade für anonyme Nutzer: Abläufe für das sichere Upgrade anonymer Nutzer.
- Benutzerdefinierte Themen: Sie können das Erscheinungsbild von FirebaseUI an Ihre App anpassen. Da FirebaseUI Open Source ist, können Sie das Projekt auch forken und genau an Ihre Anforderungen anpassen.
- Smart Lock für Passwörter – automatische Integration mit Smart Lock für Passwörter für eine schnelle geräteübergreifende Anmeldung.
Hinweis
Falls noch nicht geschehen, Fügen Sie Firebase zu Ihrem Android-Projekt hinzu.
Fügen Sie der Datei
build.gradle
auf App-Ebene die Abhängigkeiten für FirebaseUI hinzu. Wenn Sie die Anmeldung über Facebook oder Twitter unterstützen möchten, fügen Sie auch den Facebook und Twitter SDKs:dependencies { // ... implementation 'com.firebaseui:firebase-ui-auth:7.2.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 das Google Play Services SDK.
Öffnen Sie in der Firebase-Konsole den Bereich Authentifizierung und aktivieren Sie die Anmeldemethoden an, die Sie unterstützen möchten. Einige Anmeldemethoden erfordern zusätzliche Informationen, die in der Regel beim Entwickler des Dienstes verfügbar sind .
Wenn Sie Google Log-in aktiviert haben:
Laden Sie die aktualisierte Firebase-Konfigurationsdatei herunter, wenn Sie in der Console dazu aufgefordert werden. (
google-services.json
), die jetzt die Informationen zum OAuth-Client enthält für Google Log-in erforderlich.Verschieben Sie diese aktualisierte Konfigurationsdatei in Ihr Android Studio-Projekt und ersetzen Sie sie dabei. die inzwischen veraltete Konfigurationsdatei. Weitere Informationen finden Sie unter Firebase zu meinem Android-Projekt hinzufügen.
Wenn Sie den SHA-Fingerabdruck Ihrer App noch nicht angegeben haben, tun Sie dies über das Seite „Einstellungen“ der Firebase-Konsole. Siehe Client authentifizieren finden Sie weitere Informationen dazu, wie Sie den SHA-Fingerabdruck Ihrer App abrufen.
Wenn Sie die Anmeldung über Facebook oder Twitter unterstützen, fügen Sie
strings.xml
Stringressourcen hinzu, in denen die von den einzelnen Anbietern erforderlichen Anmeldedaten 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
ActivityResultLauncher
erstellen, die einen Callback für die FirebaseUI registriert
Vertrag über Aktivitätsergebnisse:
Kotlin+KTX
// 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 Ihren bevorzugten Anmeldemethoden:
Kotlin+KTX
// 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);
Sobald der Anmeldevorgang abgeschlossen ist, erhalten Sie das Ergebnis in onSignInResult
:
Kotlin+KTX
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
E-Mail-Link-Authentifizierung
Öffnen Sie in der Firebase-Konsole den Abschnitt Authentifizierung. Am Tab Sign in method (Anmeldemethode) den Anbieter E-Mail/Passwort ein. Hinweis Die Anmeldung mit E-Mail-Adresse und Passwort muss aktiviert sein, damit die Anmeldung per E-Mail-Link verwendet werden kann.
Aktivieren Sie im selben Abschnitt die Anmeldung über E-Mail-Link (Anmeldung ohne Passwort). und klicken Sie auf Speichern.
Außerdem müssen Sie Firebase Dynamic Links aktivieren, um die Anmeldung über einen E-Mail-Link zu nutzen. Im Klicken Sie in der Firebase-Konsole in der Navigationsleiste unter Interagieren auf Dynamic Links. Klicken Sie auf Jetzt starten und Domain hinzufügen Die hier ausgewählte Domain wird in der E-Mail angezeigt Links, die an Ihre Nutzer gesendet werden.
Sie können die Anmeldung per E-Mail-Link in FirebaseUI aktivieren, indem Sie
enableEmailLinkSignIn
auf einemEmailBuilder
-Instanz. Außerdem müssen Sie ein gültigesActionCodeSettings
-Objekt angeben, für dassetHandleCodeInApp
auf „wahr“ gesetzt ist. Außerdem müssen Sie die URL, an die Sie weiterleiten, auf die weiße Liste setzen.setUrl
, was in der Firebase-Konsole unter „Authentifizierung“ -> möglich ist Anmeldemethoden -> Autorisierte Domains.Kotlin+KTX
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 Sie den Link in einer bestimmten Aktivität finden möchten, folgen Sie den hier. Andernfalls wird der Link zu Ihren Launcher-Aktivitäten weitergeleitet.
Sobald Sie den Deeplink gefunden haben, müssen Sie uns telefonisch bestätigen, dass wir die Bearbeitung für Sie durchführen können. Wenn wir können, musst du es dann über
setEmailLink
an uns übergeben.Kotlin+KTX
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 geräteübergreifende Anmeldung per E-Mail-Link wird unterstützt. Das bedeutet, dass der Link, der über Ihre Android-App können Sie für die Anmeldung in Ihren Web- oder Apple-Apps verwenden. Standardmäßig ist die geräteübergreifende Unterstützung aktiviert. Sie können ihn deaktivieren, indem Sie
setForceSameDevice
für dieEmailBuilder
-Instanz aufrufen.Weitere Informationen finden Sie unter FirebaseUI-Web. und FirebaseUI-iOS .
Abmelden
FirebaseUI bietet praktische Methoden zum Abmelden von Firebase Authentication sowie alle Anbieter sozialer Identitäten:
Kotlin+KTX
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+KTX
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.
das Farbschema Ihrer App zu übernehmen. Wenn Sie weitere Anpassungen benötigen, können Sie
ein Design und ein Logo an den Intent
-Builder für die Anmeldung übergeben:
Kotlin+KTX
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 die Nutzungsbedingungen festlegen:
Kotlin+KTX
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 mit FirebaseUI finden und melden möchten, verwenden Sie den GitHub-Issue-Tracker.