FirebaseUI Auth ist eine Bibliothek, die auf dem Firebase Authentication SDK basiert und Drop-in-UI-Abläufe für die Verwendung in Ihrer App bietet.
Der empfohlene Anmeldevorgang verwendet Compose-Bildschirme. Informationen zu Apps, die weiterhin Aktivitäten verwenden, finden Sie im Abschnitt Vorhandene aktivitätsbasierte Apps.
FirebaseUI Auth bietet folgende Vorteile:
- Mehrere Anbieter: Anmeldeabläufe für E-Mail/Passwort, Telefon, Google, Facebook, Apple, GitHub, Microsoft, Yahoo, Twitter, anonyme Authentifizierung und benutzerdefiniertes OAuth.
- Kontoverwaltung: Abläufe für die 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 zum sicheren Upgrade anonymer Nutzer.
- Benutzerdefinierte Designs: Unterstützung für die Material 3-Benutzeroberfläche, die das Design Ihrer App übernehmen kann. Da FirebaseUI Open Source ist, können Sie das Projekt forken und genau an Ihre Anforderungen anpassen.
- Credential Manager: Automatische Integration mit Credential Manager für die schnelle geräteübergreifende Anmeldung.
- Multi-Faktor-Authentifizierung: Unterstützung von SMS und TOTP für zusätzliche Sicherheit.
Hinweis
- Falls noch nicht geschehen, fügen Sie Ihrem Android-Projekt Firebase hinzu.
- Aktivieren Sie in der Firebase Console die Anmeldemethoden, die Sie unterstützen möchten.
- Fügen Sie Ihrem App-Modul FirebaseUI Auth hinzu:
dependencies {
// Check Maven Central for the latest version:
// https://central.sonatype.com/artifact/com.firebaseui/firebase-ui-auth/versions
implementation("com.firebaseui:firebase-ui-auth:10.0.0-beta02")
// 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")
}
Anmeldemethoden einrichten
Google Log-in
Die Google Log-in-Konfiguration wird automatisch über die -Konfigurationsdatei bereitgestellt.
Prüfen Sie, ob Sie das Google Log-in in der Firebase-Konsole aktiviert haben.
Facebook-Login
Wenn Sie Facebook Login verwenden, fügen Sie Ihre Facebook App-ID zu strings.xml hinzu:
<resources>
<string name="facebook_application_id" translatable="false">YOUR_FACEBOOK_APP_ID</string>
<string name="facebook_login_protocol_scheme" translatable="false">fbYOUR_FACEBOOK_APP_ID</string>
<string name="facebook_client_token" translatable="false">CHANGE-ME</string>
</resources>
Eine Einrichtungsanleitung finden Sie in der Dokumentation zu Facebook für Entwickler.
Andere Anbieter
Für die Anbieter Twitter, GitHub, Microsoft, Yahoo und Apple ist eine Konfiguration in der Firebase Console erforderlich, aber keine zusätzliche Android-spezifische Einrichtung. Anbieterspezifische Anleitungen finden Sie in der Firebase Auth-Dokumentation.
Wählen Sie die Anbieter aus, die Sie in authUIConfiguration verwenden möchten:
val configuration = authUIConfiguration {
context = applicationContext
providers {
provider(AuthProvider.Email())
provider(
AuthProvider.Phone(
defaultCountryCode = "US",
)
)
provider(
AuthProvider.Google(
scopes = listOf("email"),
serverClientId = null,
)
)
provider(AuthProvider.Facebook())
}
}
Anmeldung per E-Mail-Link
Die Anmeldung mit E-Mail-Link befindet sich in der Konfiguration des E-Mail-Anbieters:
val configuration = authUIConfiguration {
context = applicationContext
providers {
provider(
AuthProvider.Email(
isEmailLinkSignInEnabled = true,
emailLinkActionCodeSettings = actionCodeSettings {
url = "https://example.com/auth"
handleCodeInApp = true
setAndroidPackageName(
"com.example.app",
true,
null,
)
},
)
)
}
}
Den vollständigen Ablauf für die Verarbeitung von Deeplinks finden Sie im Abschnitt zur Anmeldung über E-Mail-Links in der README-Datei auf GitHub.
Anmelden
Erstelle eine AuthUIConfiguration und zeige dann FirebaseAuthScreen.
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val authUI = FirebaseAuthUI.getInstance()
setContent {
MyAppTheme {
val configuration = authUIConfiguration {
context = applicationContext
theme = AuthUITheme.fromMaterialTheme()
providers {
provider(AuthProvider.Email())
provider(
AuthProvider.Google(
scopes = listOf("email"),
serverClientId = null,
)
)
}
}
if (authUI.isSignedIn()) {
HomeScreen()
} else {
FirebaseAuthScreen(
configuration = configuration,
authUI = authUI,
onSignInSuccess = { result ->
// User signed in successfully
},
onSignInFailure = { exception ->
// Sign in failed
},
onSignInCancelled = {
finish()
},
)
}
}
}
}
}
So erhalten Sie einen vollständigen Authentifizierungsablauf mit:
- Passwortauthentifizierung.
- Google Log-in
- Passwort zurücksetzen
- Material 3-Stile
- Unterstützung für den Credential Manager.
- Fehlerbehandlung über direkte Rückrufe.
Abmelden
FirebaseUI Auth bietet praktische Methoden zum Abmelden und Löschen von Konten:
lifecycleScope.launch {
FirebaseAuthUI.getInstance().signOut(applicationContext)
}
lifecycleScope.launch {
FirebaseAuthUI.getInstance().delete(applicationContext)
}
Anpassung
FirebaseUI Auth lässt sich anpassen. Am einfachsten ist es, ein Design direkt in authUIConfiguration festzulegen:
val configuration = authUIConfiguration {
context = applicationContext
providers {
provider(AuthProvider.Email())
provider(AuthProvider.Google(scopes = listOf("email"), serverClientId = null))
}
theme = AuthUITheme.Adaptive
}
Weitere Möglichkeiten:
- Verwenden Sie
AuthUITheme.Default,AuthUITheme.DefaultDarkoderAuthUITheme.Adaptive. - Mit
AuthUITheme.fromMaterialTheme()können Sie das App-Design übernehmen. - Passen Sie das Standarddesign mit
.copy()an. - Erstellen Sie eine vollständig benutzerdefinierte
AuthUITheme. - Legen Sie in
authUIConfigurationein Logo, eine URL für die Nutzungsbedingungen und eine URL für die Datenschutzerklärung fest.
Vollständige Informationen zu Themen und Anpassungen, einschließlich der Priorität von Themen, der Gestaltung von Anbieter-Schaltflächen und benutzerdefinierten Themen, finden Sie im Abschnitt „Theming and Customization“ der README-Datei auf GitHub.
Vorhandene aktivitätsbasierte Apps
Wenn Ihre App weiterhin Aktivitäten und die Activity Result API verwendet, können Sie einen aktivitätsbasierten Startablauf beibehalten, indem Sie AuthFlowController verwenden:
private val authLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult(),
) { result ->
if (result.resultCode == RESULT_OK) {
val user = FirebaseAuth.getInstance().currentUser
// ...
} else {
// User cancelled or sign-in failed
}
}
val configuration = authUIConfiguration {
context = applicationContext
providers {
provider(AuthProvider.Email())
provider(
AuthProvider.Google(
scopes = listOf("email"),
serverClientId = null,
)
)
}
}
val controller = FirebaseAuthUI.getInstance().createAuthFlow(configuration)
authLauncher.launch(controller.createIntent(this))