Catch up on highlights from Firebase at Google I/O 2023. Learn more

Übergabestatus in E-Mail-Aktionen

Sie können den Status über eine Fortsetzungs-URL übergeben, wenn Sie E-Mail-Aktionen zum Zurücksetzen von Kennwörtern senden oder die E-Mail-Adresse eines Benutzers überprüfen. Dies bietet dem Benutzer die Möglichkeit, nach Abschluss der Aktion zur App zurückzukehren. Außerdem können Sie angeben, ob der E-Mail-Aktionslink direkt von einer mobilen Anwendung verarbeitet werden soll, wenn diese statt von einer Webseite installiert wird.

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

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

  • Eine Anwendung darf nur Zugriff auf verifizierte Konten bieten. Bei einem Newsletter kann es beispielsweise erforderlich sein, dass der Benutzer seine E-Mail-Adresse bestätigt, bevor er sich anmeldet. Der Benutzer würde den E-Mail-Verifizierungsablauf durchlaufen und erwarten, zur App zurückzukehren, um sein Abonnement abzuschließen.

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

Die Fähigkeit, den Status über eine fortfahrende URL zu übergeben, ist eine leistungsstarke Funktion, die Firebase Auth bietet und die die Benutzererfahrung erheblich verbessern kann.

Zustands-/Fortsetzungs-URL in E-Mail-Aktionen übergeben

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

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

Methode Beschreibung
setUrl(String url)

Setzt den Link (State/Continue URL), 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 Deeplink des dynamischen Links.
setIOSBundleId(String iOSBundleId) Legt die iOS-Paket-ID fest. Dadurch wird versucht, den Link in einer iOS-App zu öffnen, falls 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, falls diese installiert ist. Wenn installIfNotAvailable auf true festgelegt ist, wird angegeben, 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 der Wert auf „true“ gesetzt ist, wird der Aktionscode-Link als universeller Link oder Android-App-Link gesendet und von der App geöffnet, falls installiert. Im falschen Fall wird der Code zuerst an das Web-Widget gesendet und dann bei Continue zur App weitergeleitet, falls installiert.
setDynamicLinkDomain(String dynamicLinkDomain) Legt die Domäne (oder Subdomäne) des dynamischen Links fest, die für den aktuellen Link verwendet werden soll, wenn er mit Firebase Dynamic Links geöffnet werden soll. Da mehrere dynamische Linkdomänen pro Projekt konfiguriert werden können, bietet dieses Feld die Möglichkeit, explizit eine auszuwählen. Wenn keine angegeben wird, wird standardmäßig die erste Domäne verwendet.

Das folgende Beispiel zeigt, wie Sie einen E-Mail-Bestätigungslink senden, der in einer mobilen App zuerst als Firebase Dynamic Link geöffnet wird (iOS-App com.example.ios oder Android-App com.example.android ). Der Deep-Link enthält die Nutzlast der Fortsetzungs-URL 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 , wenn ein Link gesendet wird, 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. Dynamische Firebase-Links aktivieren:

    1. Öffnen Sie in der Firebase-Konsole den Abschnitt Dynamische Links .
    2. Wenn Sie die Bedingungen für dynamische Links noch nicht akzeptiert und eine Domäne für dynamische Links erstellt haben, tun Sie dies jetzt.

      Wenn Sie bereits eine Domäne mit dynamischen Links erstellt haben, notieren Sie sich diese. Eine Domäne mit dynamischen Links 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 diese Links von Ihrer Android-Anwendung aus verarbeiten möchten, muss der Android-Paketname in den Projekteinstellungen der Firebase Console angegeben werden. Außerdem müssen SHA-1 und SHA-256 des Anwendungszertifikats angegeben werden.
    2. Außerdem müssen Sie den Intent-Filter 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 von Ihrer iOS-Anwendung aus verarbeiten möchten, muss die iOS-Bundle-ID in den Projekteinstellungen der Firebase Console angegeben werden. Außerdem müssen die App Store ID und die Apple Developer Team ID angegeben werden.
    2. Außerdem müssen Sie die universelle FDL-Link-Domäne als zugeordnete Domäne in Ihren Anwendungsfunktionen konfigurieren.
    3. Wenn Sie planen, Ihre Anwendung an die iOS-Versionen 8 und darunter 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 Empfangen dynamischer iOS-Links .

Umgang mit E-Mail-Aktionen in einer Webanwendung

Sie können angeben, ob Sie den Aktionscode-Link von einer Webanwendung zuerst behandeln und dann nach erfolgreichem Abschluss auf eine andere Webseite oder mobile Anwendung umleiten möchten, sofern die mobile Anwendung verfügbar ist. Dies erfolgt durch Aufrufen von setHandleCodeInApp(false) im ActionCodeSettings.Builder -Objekt. Obwohl eine iOS-Bundle-ID oder ein Android-Paketname nicht erforderlich sind, ermöglicht die Angabe dieser dem Benutzer, nach Abschluss des E-Mail-Aktionscodes zurück zur angegebenen App umzuleiten.

Die hier verwendete Web-URL ist die im Abschnitt E-Mail-Aktionsvorlagen konfigurierte. Für alle Projekte wird ein Standard bereitgestellt. Weitere Informationen zum Anpassen des E-Mail-Aktionshandlers finden Sie unter E-Mail-Handler anpassen.

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 eingehenden Link von Ihrer App 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 parsen.

Bei E-Mail-Aktionen wie 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, dh die E-Mail verifiziert wird.

Handhabung von E-Mail-Aktionen in einer mobilen Anwendung

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 auch die Möglichkeit, über den booleschen installIfNotAvailable anzugeben, dass die App installiert werden soll, wenn das Gerät dies unterstützt und sie noch nicht 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 geöffnet. Dies erfolgt durch Aufrufen von setHandleCodeInApp(true) im ActionCodeSettings.Builder -Objekt. Der Android-Paketname oder die iOS-Bundle-ID der mobilen Anwendung muss ebenfalls angegeben werden.

Die hier verwendete Fallback-Web-URL, wenn keine mobile App verfügbar ist, ist die im Abschnitt E-Mail-Aktionsvorlagen konfigurierte. Für alle Projekte wird ein Standard bereitgestellt. Weitere Informationen zum Anpassen des E-Mail-Aktionshandlers finden Sie unter E-Mail-Handler anpassen.

In diesem Fall ist der an den Benutzer gesendete Link zur mobilen App ein FDL-Link, dessen Payload 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 eingehenden Link von Ihrer App 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 parsen. Der Aktionscode kann direkt von einer mobilen Anwendung angewendet werden, ähnlich wie er vom Webflow aus gehandhabt wird, der im Abschnitt zum Anpassen von E-Mail-Handlern beschrieben wird.

Bei E-Mail-Aktionen wie 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, dh die E-Mail verifiziert wird.