Status in E-Mail-Aktionen übergeben

Sie können den Status über eine „continue“-URL übergeben, wenn Sie E-Mail-Aktionen zum Zurücksetzen von Passwörtern oder zum Bestätigen der E-Mail-Adresse eines Nutzers senden. So kann der Nutzer nach Abschluss der Aktion zur App zurückkehren. Außerdem können Sie festlegen, ob der E‑Mail-Aktionslink direkt über eine mobile App verarbeitet werden soll, wenn diese installiert ist, anstatt über eine Webseite.

Dies kann in den folgenden gängigen Szenarien äußerst nützlich sein:

  • Ein Nutzer, der derzeit nicht angemeldet ist, versucht möglicherweise, auf Inhalte zuzugreifen, für die eine Anmeldung erforderlich ist. Es kann jedoch sein, dass der Nutzer sein Passwort vergessen hat und daher den Ablauf zum Zurücksetzen des Passworts auslöst. Am Ende des Ablaufs erwartet der Nutzer, dass er zu dem Bereich der App zurückkehrt, auf den er zugreifen wollte.

  • Eine Anwendung darf nur Zugriff auf bestätigte Konten bieten. Bei einem Newsletter muss der Nutzer beispielsweise seine E-Mail-Adresse bestätigen, bevor er ihn abonnieren kann. Der Nutzer durchläuft den E‑Mail-Bestätigungsvorgang und erwartet, dass er zur App zurückkehren kann, um das Abo abzuschließen.

  • In anderen Fällen hat der Nutzer den Ablauf möglicherweise auf seinem Mobilgerät gestartet und erwartet, nach der Bestätigung zur mobilen App zurückzukehren, anstatt zum Browser.

Die Möglichkeit, den Status über eine „continue“-URL zu übergeben, ist eine leistungsstarke Funktion von Firebase Auth, die die Nutzerfreundlichkeit erheblich verbessern kann.

Status einer Continue-URL in E-Mail-Aktionen übergeben

Damit eine URL zur Weiterleitung sicher übergeben werden kann, muss die Domain für die URL in der Firebase-Konsole auf der weißen Liste stehen. Dies erfolgt im Bereich Authentifizierung, indem Sie diese Domain der Liste Autorisierte Domains auf dem Tab Anmeldemethode hinzufügen, sofern sie dort noch nicht aufgeführt ist.

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

Methode Beschreibung
setUrl(String url)

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

  • Wenn der Link in den Web-Aktions-Widgets verarbeitet wird, ist dies der Deeplink im Abfrageparameter continueUrl.
  • Wenn der Link direkt in der App verarbeitet wird, ist dies der Abfrageparameter continueUrl im Deeplink des Hosting-Links.
setIOSBundleId(String iOSBundleId) Legt die iOS-Paket-ID fest, damit Firebase Authentication ermitteln kann, ob ein reiner Weblink oder ein mobiler Link erstellt werden soll, der auf einem Apple-Gerät geöffnet wird.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Legt den Android-Paketnamen fest, damit Firebase Authentication ermitteln kann, ob ein reiner Weblink oder ein mobiler Link erstellt werden soll, der auf einem Android-Gerät geöffnet wird.
setHandleCodeInApp(boolean status) Gibt an, ob der E-Mail-Aktionslink zuerst in einer mobilen App oder einem Weblink geöffnet wird. Der Standardwert ist "false". 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, sofern sie installiert ist. Im Fall „false“ wird der Code zuerst an das Web-Widget gesendet und dann wird bei „Weiter“ zur App weitergeleitet, sofern sie installiert ist.
setLinkDomain(String customDomain) Wenn benutzerdefinierte Hosting-Linkdomains für ein Projekt definiert sind, geben Sie an, welche verwendet werden soll, wenn der Link von einer bestimmten mobilen App geöffnet werden soll. Andernfalls wird automatisch die Standarddomain ausgewählt (z. B. PROJECT_ID.firebaseapp.com).
setDynamicLinkDomain(String dynamicLinkDomain) Verworfen. Geben Sie diesen Parameter nicht an.

Das folgende Beispiel zeigt, wie Sie einen Link zur E-Mail-Bestätigung senden, der zuerst in einer mobilen App geöffnet wird. Der Deeplink enthält die Nutzlast der Continue-URL http://www.example.com/verify?uid=1234.

Kotlin

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 Authentication verwendet Firebase Hosting, wenn ein Link gesendet wird, der in einer mobilen Anwendung geöffnet werden soll. Damit Sie diese Funktion nutzen können, müssen Hosting-Links in der Firebase-Konsole konfiguriert werden.

  1. Android-Apps konfigurieren:

    1. Wenn Sie diese Links in Ihrer Android-Anwendung verarbeiten möchten, muss der Paketname Ihrer App in den Projekteinstellungen der Firebase-Konsole angegeben werden. Außerdem müssen der SHA‑1- und der SHA‑256-Fingerabdruck des Anwendungszertifikats angegeben werden.
    2. Außerdem müssen Sie den Intent-Filter für den Deeplink in Ihrer AndroidManifest.xml-Datei konfigurieren.
    3. Weitere Informationen finden Sie unter Anleitung zum Empfangen von Android-Hosting-Links.
  2. iOS-Anwendungen konfigurieren:

    1. Wenn Sie diese Links in Ihrer iOS-Anwendung verarbeiten möchten, müssen Sie die Linkdomain Hosting als zugeordnete Domain in den Funktionen Ihrer Anwendung konfigurieren.
    2. Weitere Informationen zum Empfangen von iOS-Hosting-Links

E‑Mail-Aktionen in einer Webanwendung verarbeiten

Sie können festlegen, ob der Aktionscodelink zuerst von einer Webanwendung verarbeitet und dann nach erfolgreichem Abschluss zu einer anderen Webseite oder mobilen Anwendung weitergeleitet werden soll, sofern die mobile Anwendung verfügbar ist. Dazu wird setHandleCodeInApp(false) im Objekt ActionCodeSettings.Builder aufgerufen. Eine iOS-Paket-ID oder ein Android-Paketname sind zwar nicht erforderlich, aber wenn Sie sie angeben, kann der Nutzer nach Abschluss des E-Mail-Aktionscodes zur angegebenen App zurückgeleitet werden.

Die hier verwendete Web-URL ist die, die im Abschnitt „E-Mail-Aktionsvorlagen“ konfiguriert ist. Für alle Projekte wird standardmäßig eine bereitgestellt. Weitere Informationen zum Anpassen des E‑Mail-Aktions-Handlers finden Sie unter E‑Mail-Handler anpassen.

In diesem Fall ist der Link im Abfrageparameter continueUrl ein Hosting-Link, dessen Nutzlast das im ActionCodeSettings-Objekt angegebene URL ist.

Bei der Verarbeitung von E-Mail-Aktionen wie der E-Mail-Bestätigung muss der Aktionscode aus dem oobCode-Abfrageparameter aus dem Deeplink geparst und dann über applyActionCode angewendet werden, damit die Änderung wirksam wird, d.h. die E-Mail-Adresse bestätigt wird.

E‑Mail-Aktionen in einer mobilen Anwendung verarbeiten

Sie können festlegen, ob der Aktionscodelink zuerst in Ihrer mobilen Anwendung verarbeitet werden soll, sofern sie installiert ist. Wenn auf den Link auf einem Gerät geklickt wird, das die mobile App nicht unterstützt, wird er stattdessen auf einer Webseite geöffnet. Dazu rufen Sie setHandleCodeInApp(true) im ActionCodeSettings.Builder-Objekt auf. Außerdem muss der Android-Paketname oder die iOS-Bundle-ID der mobilen App angegeben werden.

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

In diesem Fall ist der an den Nutzer gesendete Link zur mobilen App ein Hosting-Link, dessen Nutzlast die in der Console konfigurierte Aktionscode-URL mit den Abfrageparametern oobCode, mode, apiKey und continueUrl ist. Letzteres ist das ursprüngliche URL, das im ActionCodeSettings-Objekt angegeben ist. Der Aktionscode kann direkt aus einer mobilen App angewendet werden, ähnlich wie im Webflow, der im Abschnitt E-Mail-Handler anpassen beschrieben wird.

Bei der Verarbeitung von E-Mail-Aktionen wie der E-Mail-Bestätigung muss der Aktionscode aus dem oobCode-Abfrageparameter aus dem Deeplink geparst und dann über applyActionCode angewendet werden, damit die Änderung wirksam wird, d.h. die E-Mail-Adresse bestätigt wird.