Status in E-Mail-Aktionen übergeben

Sie können den Status über eine Weiterleitungs-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 angeben, ob der E-Mail-Aktionslink direkt über eine mobile Anwendung verarbeitet werden soll, wenn diese installiert ist, anstatt über eine Webseite.

Das kann in folgenden häufigen Fällen ä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. Möglicherweise hat der Nutzer jedoch sein Passwort vergessen und löst daher den Ablauf zum Zurücksetzen des Passworts aus. Am Ende des Ablaufs erwartet der Nutzer, dass er zum Bereich der App zurückkehrt, auf den er zugreifen wollte.

  • Eine App darf nur Zugriff auf bestätigte Konten bieten. In einer Newsletter-App muss der Nutzer beispielsweise seine E-Mail-Adresse bestätigen, bevor er sich anmelden kann. Der Nutzer durchläuft den E-Mail-Bestätigungsvorgang und erwartet, dass er zur App zurückgeleitet wird, um sein Abo abzuschließen.

  • Wenn ein Nutzer in einer Apple-App den Ablauf zum Zurücksetzen des Passworts oder zur Bestätigung der E-Mail-Adresse startet, erwartet er in der Regel, dass er den Ablauf innerhalb der App abschließen kann. Die Möglichkeit, den Status über eine Weiterleitungs-URL zu übergeben, macht dies möglich.

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

Status-/Weiterleitungs-URL in E-Mail-Aktionen übergeben

Damit eine Weiterleitungs-URL sicher übergeben werden kann, muss die Domain für die URL in der Firebase Console auf die Zulassungsliste gesetzt werden. Dazu fügen Sie diese Domain im Bereich Authentifizierung auf dem Tab Anmeldemethode der Liste der Autorisierten Domains hinzu, falls sie noch nicht dort 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. Diese Schnittstelle verwendet die folgenden Parameter:

Parameter Typ Beschreibung
url String

Hiermit wird der Link (Status-/Fortsetzungs-URL) festgelegt, 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 continueUrl-Abfrageparameter im Deeplink des dynamischen Links.
iOSBundleId String Legt die Set-ID fest. Dadurch wird versucht, den Link in einer Apple-App zu öffnen, sofern diese installiert ist. Die App muss in der Console registriert sein. Wenn keine Set-ID angegeben ist, wird der Wert dieses Felds auf die Set-ID des Haupt-Sets der App festgelegt.
androidPackageName String Legt den Android-Paketnamen fest. Dadurch wird versucht, den Link in einer Android-App zu öffnen, sofern diese installiert ist.
androidInstallApp bool Gibt an, ob die Android-App installiert werden soll, wenn das Gerät sie unterstützt und die App noch nicht installiert ist. Wenn dieses Feld ohne „packageName“ angegeben wird, wird ein Fehler ausgegeben, in dem erklärt wird, dass „packageName“ in Verbindung mit diesem Feld angegeben werden muss.
androidMinimumVersion String Die Mindestversion der App, die in diesem Ablauf unterstützt wird. Wenn „minimumVersion“ angegeben ist und eine ältere Version der App installiert ist, wird der Nutzer zum Play Store weitergeleitet, um die App zu aktualisieren. Die Android-App muss in der Console registriert sein.
handleCodeInApp bool Ob der Link für die E-Mail-Aktion zuerst in einer mobilen App oder über einen Weblink geöffnet werden soll. Der Standardwert ist "false". Wenn dieser Wert auf „true“ gesetzt ist, wird der Link zum Aktionscode als universeller Link oder Android-App-Link gesendet und von der App geöffnet, sofern sie installiert ist. Andernfalls wird der Code zuerst an das Web-Widget gesendet und dann bei „Continue“ (Weiter) zur App weitergeleitet, falls installiert.
dynamicLinkDomain String (Eingestellt, verwenden Sie „linkDomain“) Legt die Dynamic Link-Domain (oder ‑Subdomain) fest, die für den aktuellen Link verwendet werden soll, wenn er mit Firebase Dynamic Links geöffnet werden soll. Da pro Projekt mehrere dynamische Link-Domains konfiguriert werden können, können Sie in diesem Feld eine davon explizit auswählen. Wenn keine angegeben ist, wird standardmäßig die erste Domain verwendet. linkDomain String Die optionale benutzerdefinierte Firebase Hosting-Domain, die verwendet werden soll, wenn der Link über eine bestimmte mobile App geöffnet werden soll. Die Domain muss in Firebase Hosting konfiguriert sein und zum Projekt gehören. Dies kann keine Standard-Hostingdomain sein („web.app“ oder „firebaseapp.com“). Diese Einstellung ersetzt die eingestellte Einstellung „dynamicLinkDomain“.

Im folgenden Beispiel wird gezeigt, wie Sie einen E-Mail-Bestätigungslink senden, der zuerst in einer mobilen App als Firebase-Dynamic Link mit der benutzerdefinierten Dynamic Link-Domain example.page.link geöffnet wird (iOS-App com.example.ios oder Android-App com.example.android, in der die App installiert wird, falls noch nicht geschehen, und deren Mindestversion 12 ist). Der Deeplink enthält die Nutzlast der Weiterleitungs-URL https://www.example.com/?email=user@example.com.

final user = FirebaseAuth.instance.currentUser;

final actionCodeSettings = ActionCodeSettings(
  url: "http://www.example.com/verify?email=${user?.email}",
  iOSBundleId: "com.example.ios",
  androidPackageName: "com.example.android",
);

await user?.sendEmailVerification(actionCodeSettings);

Firebase Auth verwendet Firebase Dynamic Links, wenn ein Link gesendet wird, der in einer mobilen Anwendung geöffnet werden soll. Damit Sie diese Funktion verwenden können, müssen Dynamic Links in der Firebase Console konfiguriert werden.

  1. Firebase Dynamic Links aktivieren:

    1. Öffnen Sie in der Firebase Console den Bereich Dynamic Links.

    2. Wenn Sie die Nutzungsbedingungen für Dynamic Links noch nicht akzeptiert und keine Dynamic Links-Domain erstellt haben, tun Sie dies jetzt.

    3. Wenn Sie bereits eine Dynamic Links-Domain erstellt haben, notieren Sie sich diese. Eine Dynamic Links-Domain sieht in der Regel so aus:

      example.page.link

    4. Sie benötigen diesen Wert, wenn Sie Ihre Apple- oder Android-App so konfigurieren, dass der eingehende Link abgefangen wird.

  2. So konfigurieren Sie Android-Anwendungen:

    1. Wenn Sie diese Links über Ihre Android-Anwendung verarbeiten möchten, muss der Name des Android-Pakets in den Projekteinstellungen der Firebase Console angegeben werden. Außerdem müssen der SHA-1- und der SHA-256-Hash des Anwendungszertifikats angegeben werden.
    2. Außerdem müssen Sie den Intent-Filter für den Deeplink in der Datei „AndroidManifest.xml“ konfigurieren.
    3. Weitere Informationen finden Sie unter Anleitung zum Empfangen von dynamischen Android-Links.
  3. Apple-Anwendungen konfigurieren:

    1. Wenn Sie diese Links über Ihre Anwendung verarbeiten möchten, muss die 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 Link-Domain der FDL als zugehörige Domain in Ihren App-Funktionen konfigurieren.
    3. Wenn Sie Ihre Anwendung für iOS-Versionen 8 und niedriger bereitstellen möchten, müssen Sie Ihre Bundle-ID als benutzerdefiniertes Schema für eingehende URLs festlegen.
    4. Weitere Informationen finden Sie in der Anleitung zum Empfangen dynamischer Links für Apple-Plattformen.

E-Mail-Aktionen in einer Webanwendung verarbeiten

Sie können angeben, ob der Aktionscode-Link zuerst über eine Webanwendung verarbeitet und nach erfolgreichem Abschluss zu einer anderen Webseite oder mobilen Anwendung weitergeleitet werden soll, sofern die mobile Anwendung verfügbar ist. Dazu wird im ActionCodeSettings-Objekt handleCodeInApp auf false gesetzt. Eine Bundle-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 weitergeleitet werden.

Die hier verwendete Web-URL ist die im Abschnitt „Vorlagen für E-Mail-Aktionen“ konfigurierte. Für alle Projekte wird eine Standard-Konfiguration 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 FDL-Link, dessen Nutzlast die im ActionCodeSettings-Objekt angegebene URL ist. Sie können den eingehenden Link aus Ihrer App zwar ohne zusätzliche Abhängigkeiten abfangen und verarbeiten, wir empfehlen jedoch, die FDL-Clientbibliothek zu verwenden, um den Deeplink für Sie zu parsen.

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

E-Mail-Aktionen in einer mobilen App verarbeiten

Sie können angeben, ob Sie den Link zum Aktionscode zuerst in Ihrer mobilen App verarbeiten möchten, sofern diese installiert ist. Bei Android-Anwendungen können Sie über das androidInstallApp auch angeben, dass die App installiert werden soll, wenn das Gerät sie unterstützt und sie noch nicht installiert ist. Wenn der Link von einem Gerät angeklickt wird, das die mobile Anwendung nicht unterstützt, wird er stattdessen über eine Webseite geöffnet. Dazu wird im ActionCodeSettings-Objekt handleCodeInApp auf true gesetzt. Außerdem müssen Sie den Android-Paketnamen oder die Bundle-ID der mobilen Anwendung angeben.Die hier verwendete Fallback-Web-URL, die verwendet wird, wenn keine mobile App verfügbar ist, ist die im Abschnitt „Vorlagen für E-Mail-Aktionen“ konfigurierte. Für alle Projekte wird ein Standard-Speicherplatz 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 für die mobile App ein FDL-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 wurde. Sie können den eingehenden Link von Ihrer App zwar ohne zusätzliche Abhängigkeiten abfangen und verarbeiten, wir empfehlen jedoch, die FDL-Clientbibliothek zu verwenden, um den Deeplink für Sie zu parsen. Der Aktionscode kann direkt über eine mobile Anwendung angewendet werden, ähnlich wie im Web-Workflow, der im Abschnitt E-Mail-Handler anpassen beschrieben wird.

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