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

Fügen Sie Ihrer Android-App mit FirebaseUI ganz einfach eine Anmeldung hinzu

FirebaseUI ist eine Bibliothek, die auf dem Firebase Authentication SDK basiert und Drop-In-UI-Flows zur Verwendung in Ihrer App bereitstellt. FirebaseUI bietet die folgenden Vorteile:

  • Mehrere Anbieter - Anmeldeflüsse für E-Mail / Passwort, E-Mail-Link, Telefonauthentifizierung, Google-Anmeldung, Facebook-Anmeldung, Twitter-Anmeldung und GitHub-Anmeldung.
  • Account Management - fließt zu Account - Management - Aufgaben wie Kontoerstellung und das Zurücksetzen von Kennwörtern umgehen.
  • Kontoverknüpfung - Flows zur sicheren Verknüpfung von Benutzerkonten zwischen Identitätsanbietern.
  • Anonymous Upgrade Benutzer - fließt sicher für anonyme Benutzer zu aktualisieren.
  • Benutzerdefinierte Designs - Passen Sie das Erscheinungsbild von FirebaseUI an Ihre App an. Da FirebaseUI Open Source ist, können Sie das Projekt auch verzweigen und genau an Ihre Bedürfnisse anpassen.
  • Smart Lock für Kennwörter - Automatische Integration mit Smart Lock für Kennwörter für eine schnelle geräteübergreifende Anmeldung.

Bevor Sie beginnen

  1. Wenn Sie dies noch nicht getan haben, fügen Sie Firebase zu Ihrem Android-Projekt hinzu .

  2. build.gradle in Ihrer build.gradle Datei auf Projektebene sicher, dass das Maven-Repository von Google sowohl in Ihrem buildscript als auch in Ihrem allprojects Abschnitt enthalten ist.

  3. Fügen Sie die Abhängigkeiten für FirebaseUI zu Ihrer build.gradle Datei auf App-Ebene build.gradle . Wenn Sie die Anmeldung bei Facebook oder Twitter unterstützen möchten, fügen Sie auch die Facebook- und Twitter-SDKs hinzu:

    dependencies {
        // ...
    
        implementation 'com.firebaseui:firebase-ui-auth:6.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:4.x'
    
        // Required only if Twitter login support is required
        // Find the latest Twitter SDK releases here: https://goo.gl/E5wZvQ
        implementation 'com.twitter.sdk.android:twitter-core:3.x'
    }
    

    Das FirebaseUI Auth SDK hat transitive Abhängigkeiten vom Firebase SDK und dem Google Play Services SDK.

  4. Öffnen Sie in der Firebase-Konsole den Abschnitt Authentifizierung und aktivieren Sie die Anmeldemethoden , die Sie unterstützen möchten. Für einige Anmeldemethoden sind zusätzliche Informationen erforderlich, die normalerweise in der Entwicklerkonsole des Dienstes verfügbar sind.

  5. Wenn Sie Google Sign-in unterstützen und den SHA-1-Fingerabdruck Ihrer App noch nicht angegeben haben, tun Sie dies auf der Seite "Einstellungen" der Firebase-Konsole. Weitere Informationen zum Abrufen des SHA-1-Fingerabdrucks Ihrer App finden Sie unter Authentifizieren Ihres Kunden .

  6. Wenn Sie die Anmeldung bei Facebook oder Twitter unterstützen, fügen Sie strings.xml Zeichenfolgenressourcen hinzu, in denen die für jeden Anbieter erforderlichen Identifizierungsinformationen 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>
      <!-- Twitter consumer key and secret -->
      <string name="twitter_consumer_key" translatable="false">YOUR_CONSUMER_KEY</string>
      <string name="twitter_consumer_secret" translatable="false">YOUR_CONSUMER_SECRET</string>
    </resources>
    

Einloggen

Erstellen Sie zum Starten des FirebaseUI-Anmeldeflusses eine Anmeldeabsicht mit Ihren bevorzugten Anmeldemethoden:

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
startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .build(),
        RC_SIGN_IN);

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
startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .build(),
        RC_SIGN_IN)

Wenn der onActivityResult abgeschlossen ist, erhalten Sie das Ergebnis in onActivityResult :

Java

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN) {
        IdpResponse response = IdpResponse.fromResultIntent(data);

        if (resultCode == 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.
            // ...
        }
    }
}

Kotlin + KTX

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == RC_SIGN_IN) {
        val response = IdpResponse.fromResultIntent(data)

        if (resultCode == Activity.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.
            // ...
        }
    }
}

Richten Sie Anmeldemethoden ein

  1. Öffnen Sie in der Firebase-Konsole den Abschnitt Authentifizierung . Auf dem Anmelden Methode Registerkarte, aktivieren Sie den E - Mail / Passwort - Anbieter. Beachten Sie, dass die E-Mail- / Kennwortanmeldung aktiviert sein muss, damit die E-Mail-Linkanmeldung verwendet werden kann.

  2. Aktivieren Sie im selben Abschnitt die Anmeldemethode für E-Mail-Links (kennwortlose Anmeldung) und klicken Sie auf Speichern .

  3. Sie müssen auch Firebase Dynamic Links aktivieren, um die E-Mail-Link-Anmeldung verwenden zu können. Klicken Sie in der Firebase-Konsole in der Navigationsleiste unter Grow auf Dynamic Links . Klicken Sie auf Erste Schritte und fügen Sie eine Domain hinzu. Die Domain, die Sie hier auswählen, wird in den E-Mail-Links angezeigt, die an Ihre Benutzer gesendet werden.

  4. Sie können die Anmeldung für E-Mail-Links in FirebaseUI enableEmailLinkSignIn indem Sie enableEmailLinkSignIn in einer EmailBuilder Instanz EmailBuilder . Sie müssen auch ein gültiges ActionCodeSettings Objekt mit setHandleCodeInApp auf true setHandleCodeInApp . Darüber hinaus müssen Sie die URL, die Sie an setUrl , in die Whitelist aufnehmen. setUrl kann in der Firebase-Konsole unter Authentifizierung -> setUrl -> Autorisierte Domänen erfolgen.

    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();
    
    startActivityForResult(
            AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setAvailableProviders(Arrays.asList(
                            new AuthUI.IdpConfig.EmailBuilder().enableEmailLinkSignIn()
                            .setActionCodeSettings(actionCodeSettings).build())
                    .build(),
            RC_SIGN_IN);
    
    
  5. Wenn Sie den Link in einer bestimmten Aktivität fangen wollen, folgen Sie bitte den Schritten skizziert hier . Andernfalls wird der Link zu Ihrer Launcher-Aktivität weitergeleitet.

  6. Sobald Sie den Deep Link gefunden haben, müssen Sie anrufen, um zu überprüfen, ob wir ihn für Sie erledigen können. Wenn wir können, müssen Sie es uns über setEmailLink .

    if (AuthUI.canHandleIntent(getIntent())) {
        if (getIntent().getExtras() == null) {
                return;
            }
            String link = getIntent().getExtras().getString(ExtraConstants.EMAIL_LINK_SIGN_IN);
            if (link != null) {
                startActivityForResult(
                        AuthUI.getInstance()
                                .createSignInIntentBuilder()
                                .setEmailLink(link)
                                .setAvailableProviders(getAvailableProviders())
                                .build(),
                        RC_SIGN_IN);
            }
    }
    
  7. Die optionale geräteübergreifende E-Mail-Link-Anmeldung wird unterstützt. Dies bedeutet, dass der über Ihre Android-App gesendete Link zum Anmelden bei Ihren Web- oder iOS-Apps verwendet werden kann. Standardmäßig ist die geräteübergreifende Unterstützung aktiviert. Sie können es deaktivieren, indem Sie setForceSameDevice in der EmailBuilder Instanz EmailBuilder .

    Weitere Informationen finden Sie unter FirebaseUI-Web und FirebaseUI-iOS .

Ausloggen

FirebaseUI bietet praktische Methoden zum Abmelden von der Firebase-Authentifizierung sowie für alle Anbieter sozialer Identität:

Java

AuthUI.getInstance()
        .signOut(this)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            public void onComplete(@NonNull Task<Void> task) {
                // ...
            }
        });

Kotlin + KTX

AuthUI.getInstance()
        .signOut(this)
        .addOnCompleteListener {
            // ...
        }

Sie können das Benutzerkonto auch vollständig löschen:

Java

AuthUI.getInstance()
        .delete(this)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                // ...
            }
        });

Kotlin + KTX

AuthUI.getInstance()
        .delete(this)
        .addOnCompleteListener {
            // ...
        }

Anpassung

Standardmäßig verwendet FirebaseUI AppCompat für das Theming. Dies bedeutet, dass das Farbschema Ihrer App natürlich übernommen wird. Wenn Sie weitere Anpassung benötigen , können Sie ein Thema und ein Logo auf die Anmelde-Pass Intent Bauer:

Java

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setLogo(R.drawable.my_great_logo)      // Set logo drawable
                .setTheme(R.style.MySuperAppTheme)      // Set theme
                .build(),
        RC_SIGN_IN);

Kotlin + KTX

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setLogo(R.drawable.my_great_logo) // Set logo drawable
                .setTheme(R.style.MySuperAppTheme) // Set theme
                .build(),
        RC_SIGN_IN)

Sie können auch eine benutzerdefinierte Datenschutzrichtlinie und Nutzungsbedingungen festlegen:

Java

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setTosAndPrivacyPolicyUrls(
                        "https://example.com/terms.html",
                        "https://example.com/privacy.html")
                .build(),
        RC_SIGN_IN);

Kotlin + KTX

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setTosAndPrivacyPolicyUrls(
                        "https://example.com/terms.html",
                        "https://example.com/privacy.html")
                .build(),
        RC_SIGN_IN)

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 den GitHub Issue Tracker .