Übergabestatus in E-Mail-Aktionen

Sie können den Status über eine Weiter-URL übergeben, wenn Sie E-Mail-Aktionen zum Zurücksetzen des Passworts senden oder die E-Mail-Adresse eines Benutzers überprüfen. Dies gibt dem Benutzer die Möglichkeit, nach Abschluss der Aktion zur App zurückzukehren. Darüber hinaus können Sie angeben, ob der E-Mail-Aktionslink direkt von einer mobilen Anwendung aus verarbeitet werden soll, wenn diese anstelle einer Webseite installiert wird.

Dies kann in den folgenden häufigen Szenarien äußerst nützlich sein:

  • Ein derzeit nicht angemeldeter Benutzer versucht möglicherweise, auf Inhalte zuzugreifen, für die die Anmeldung des Benutzers erforderlich ist. Möglicherweise hat der Benutzer jedoch sein Kennwort vergessen und löst daher den Fluss zum Zurücksetzen des Kennworts aus. Am Ende des Ablaufs erwartet der Benutzer, zu dem Abschnitt der App zurückzukehren, auf den er zugreifen wollte.

  • Eine Anwendung darf nur Zugriff auf verifizierte Konten bieten. Beispielsweise kann es für einen Newsletter erforderlich sein, dass der Benutzer seine E-Mail-Adresse bestätigt, bevor er sich anmeldet. Der Benutzer durchläuft den E-Mail-Verifizierungsprozess und erwartet, zur App zurückzukehren, um sein Abonnement abzuschließen.

  • In anderen Fällen hat der Benutzer den Flow möglicherweise von seinem Mobilgerät aus gestartet und erwartet nach der Überprüfung, dass er zu seiner mobilen App und nicht zum Browser zurückkehrt.

Die Möglichkeit, den Status über eine Fortsetzungs-URL zu übergeben, ist eine leistungsstarke Funktion von Firebase Auth, die das Benutzererlebnis erheblich verbessern kann.

Übergabe der Status-/Fortsetzungs-URL in E-Mail-Aktionen

Um eine Fortsetzungs-URL sicher zu übergeben, muss die Domäne für die URL in der Firebase-Konsole auf die Whitelist gesetzt werden. Dies erfolgt im Abschnitt „ Authentifizierung “, indem diese Domäne zur Liste der autorisierten Domänen auf der Registerkarte „Anmeldemethode“ hinzugefügt wird, sofern sie dort noch nicht vorhanden ist.

Beim Senden einer E-Mail zum Zurücksetzen des Passworts oder einer Bestätigungs-E-Mail muss eine ActionCodeSettings- Instanz bereitgestellt werden. Es kann mit der zugehörigen ActionCodeSettings.Builder- Klasse erstellt werden, die die folgenden Methoden enthält:

Methode Beschreibung
setUrl(String url)

Legt den Link (Status-/Weiter-URL) fest, der in verschiedenen Kontexten unterschiedliche Bedeutungen hat:

  • Wenn der Link in den Webaktions-Widgets verarbeitet wird, ist dies der Deep-Link im continueUrl Abfrageparameter.
  • Wenn der Link direkt in der App verarbeitet wird, ist dies der continueUrl Abfrageparameter im Deep Link des dynamischen Links.
setIOSBundleId(String iOSBundleId) Legt die iOS-Bundle-ID fest. Dadurch wird versucht, den Link in einer iOS-App zu öffnen, sofern diese installiert ist. Die iOS-App muss in der Konsole registriert werden.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Legt den Android-Paketnamen fest. Dadurch wird versucht, den Link in einer Android-App zu öffnen, sofern diese installiert ist. Wenn installIfNotAvailable auf true gesetzt ist, gibt es an, ob die Android-App installiert werden soll, wenn das Gerät dies unterstützt und die App noch nicht installiert ist. Wenn „minimumVersion“ angegeben ist und eine ältere Version der App installiert ist, wird der Benutzer zum Play Store weitergeleitet, um die App zu aktualisieren. Die Android-App muss in der Konsole registriert werden.
setHandleCodeInApp(boolean status) Ob der E-Mail-Aktionslink zuerst in einer mobilen App oder einem Weblink geöffnet wird. Der Standardwert ist falsch. Wenn dieser Wert auf „true“ gesetzt ist, wird der Aktionscode-Link als universeller Link oder Android-App-Link gesendet und von der App geöffnet, sofern diese installiert ist. Im falschen Fall wird der Code zuerst an das Web-Widget gesendet und dann beim Fortfahren zur App weitergeleitet, sofern diese installiert ist.
setDynamicLinkDomain(String dynamicLinkDomain) Legt die dynamische Linkdomäne (oder Subdomäne) fest, die für den aktuellen Link verwendet werden soll, wenn dieser mit Firebase Dynamic Links geöffnet werden soll. Da pro Projekt mehrere dynamische Linkdomänen konfiguriert werden können, bietet dieses Feld die Möglichkeit, explizit eine davon auszuwählen. Wenn keine angegeben wird, wird standardmäßig die erste Domäne verwendet.

Das folgende Beispiel zeigt, wie ein E-Mail-Bestätigungslink gesendet wird, der zunächst in einer mobilen App als dynamischer Firebase-Link geöffnet wird (iOS-App com.example.ios oder Android-App com.example.android ). Der Deep-Link enthält die Weiter-URL-Nutzlast https://www.example.com/?email=user@example.com .

Kotlin+KTX

val auth = Firebase.auth
val user = auth.currentUser!!

val url = "http://www.example.com/verify?uid=" + user.uid
val actionCodeSettings = ActionCodeSettings.newBuilder()
    .setUrl(url)
    .setIOSBundleId("com.example.ios")
    // The default for this is populated with the current android package name.
    .setAndroidPackageName("com.example.android", false, null)
    .build()

user.sendEmailVerification(actionCodeSettings)
    .addOnCompleteListener { task ->
        if (task.isSuccessful) {
            Log.d(TAG, "Email sent.")
        }
    }

Java

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();

String url = "http://www.example.com/verify?uid=" + user.getUid();
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build();

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

Firebase Auth verwendet Firebase Dynamic Links beim Senden eines Links, der in einer mobilen Anwendung geöffnet werden soll. Um diese Funktion nutzen zu können, müssen dynamische Links in der Firebase-Konsole konfiguriert werden.

  1. Aktivieren Sie dynamische Firebase-Links:

    1. Öffnen Sie in der Firebase-Konsole den Abschnitt „Dynamische Links“ .
    2. Wenn Sie die Dynamic Links-Bedingungen noch nicht akzeptiert und keine Dynamic Links-Domäne erstellt haben, tun Sie dies jetzt.

      Wenn Sie bereits eine Dynamic Links-Domäne erstellt haben, notieren Sie sich dies. Eine Dynamic Links-Domäne sieht normalerweise wie im folgenden Beispiel aus:

      example.page.link

      Sie benötigen diesen Wert, wenn Sie Ihre Apple- oder Android-App so konfigurieren, dass sie den eingehenden Link abfängt.

  2. Konfigurieren von Android-Anwendungen:

    1. Wenn Sie planen, diese Links von Ihrer Android-Anwendung aus zu verarbeiten, muss der Android-Paketname in den Projekteinstellungen der Firebase Console angegeben werden. Darüber hinaus müssen SHA-1 und SHA-256 des Anwendungszertifikats angegeben werden.
    2. Sie müssen außerdem den Absichtsfilter für den Deep Link in Ihrer AndroidManifest.xml-Datei konfigurieren.
    3. Weitere Informationen hierzu finden Sie in der Anleitung zum Empfangen dynamischer Android-Links .
  3. Konfigurieren von iOS-Anwendungen:

    1. Wenn Sie diese Links über Ihre iOS-Anwendung verarbeiten möchten, muss die iOS-Bundle-ID in den Projekteinstellungen der Firebase Console angegeben werden. Darüber hinaus müssen auch die App Store ID und die Apple Developer Team ID angegeben werden.
    2. Sie müssen außerdem die FDL-Universal-Link-Domäne als zugeordnete Domäne in Ihren Anwendungsfunktionen konfigurieren.
    3. Wenn Sie planen, Ihre Anwendung an iOS-Versionen 8 und niedriger zu verteilen, müssen Sie Ihre iOS-Bundle-ID als benutzerdefiniertes Schema für eingehende URLs festlegen.
    4. Weitere Informationen hierzu finden Sie in der Anleitung zum Empfang dynamischer iOS-Links .

Verarbeiten von E-Mail-Aktionen in einer Webanwendung

Sie können angeben, ob Sie zuerst den Aktionscode-Link einer Webanwendung verarbeiten und dann nach erfolgreichem Abschluss zu einer anderen Webseite oder mobilen Anwendung weiterleiten möchten, sofern die mobile Anwendung verfügbar ist. Dies erfolgt durch den Aufruf setHandleCodeInApp(false) im ActionCodeSettings.Builder- Objekt. Eine iOS-Bundle-ID oder ein Android-Paketname sind zwar nicht erforderlich, ihre Bereitstellung ermöglicht es dem Benutzer jedoch, nach Abschluss des E-Mail-Aktionscodes zur angegebenen App zurückzukehren.

Die hier verwendete Web-URL ist diejenige, die im Abschnitt „E-Mail-Aktionsvorlagen“ konfiguriert wurde. Für alle Projekte wird ein Standard bereitgestellt. Weitere Informationen zum Anpassen des E-Mail-Aktionshandlers finden Sie unter Anpassen von E-Mail-Handlern.

In diesem Fall ist der Link innerhalb des continueUrl Abfrageparameters ein FDL-Link, dessen Nutzlast die im ActionCodeSettings Objekt angegebene URL ist. Während Sie den von Ihrer App eingehenden Link ohne zusätzliche Abhängigkeit abfangen und verarbeiten können, empfehlen wir die Verwendung der FDL-Clientbibliothek, um den Deep Link für Sie zu analysieren.

Bei der Bearbeitung von E-Mail-Aktionen wie der E-Mail-Verifizierung muss der Aktionscode aus dem Abfrageparameter oobCode aus dem Deep-Link geparst und dann über applyActionCode angewendet werden, damit die Änderung wirksam wird, d. h. die E-Mail wird überprüft.

E-Mail-Aktionen in einer mobilen Anwendung verwalten

Sie können angeben, ob Sie den Aktionscode-Link zuerst in Ihrer mobilen Anwendung verarbeiten möchten, sofern diese installiert ist. Bei Android-Anwendungen haben Sie außerdem die Möglichkeit, über den booleschen Wert installIfNotAvailable anzugeben, dass die App installiert werden soll, wenn das Gerät dies unterstützt und sie nicht bereits installiert ist. Wenn der Link von einem Gerät aus angeklickt wird, das die mobile Anwendung nicht unterstützt, wird er stattdessen von einer Webseite aus geöffnet. Dies erfolgt durch den Aufruf setHandleCodeInApp(true) im ActionCodeSettings.Builder- Objekt. Außerdem muss der Android-Paketname oder die iOS-Bundle-ID der mobilen Anwendung angegeben werden.

Wenn keine mobile App verfügbar ist, wird hier die Fallback-Web-URL verwendet, die im Abschnitt „E-Mail-Aktionsvorlagen“ konfiguriert wurde. Für alle Projekte wird ein Standard bereitgestellt. Weitere Informationen zum Anpassen des E-Mail-Aktionshandlers finden Sie unter Anpassen von E-Mail-Handlern.

In diesem Fall handelt es sich bei dem an den Benutzer gesendeten Link zur mobilen App um einen FDL-Link, dessen Nutzlast die in der Konsole konfigurierte Aktionscode-URL mit den Abfrageparametern oobCode , mode , apiKey und continueUrl ist. Letzteres ist die ursprüngliche URL , die im ActionCodeSettings Objekt angegeben ist. Während Sie den von Ihrer App eingehenden Link ohne zusätzliche Abhängigkeit abfangen und verarbeiten können, empfehlen wir die Verwendung der FDL-Clientbibliothek, um den Deep Link für Sie zu analysieren. Der Aktionscode kann direkt aus einer mobilen Anwendung angewendet werden, ähnlich wie er im Webflow gehandhabt wird, der im Abschnitt „Anpassen von E-Mail-Handlern“ beschrieben wird.

Bei der Bearbeitung von E-Mail-Aktionen wie der E-Mail-Verifizierung muss der Aktionscode aus dem Abfrageparameter oobCode aus dem Deep-Link geparst und dann über applyActionCode angewendet werden, damit die Änderung wirksam wird, d. h. die E-Mail wird überprüft.