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 den 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. Beispielsweise muss der Nutzer seine E-Mail-Adresse möglicherweise bestätigen, bevor er sich für einen Newsletter registriert. Der Nutzer durchläuft den E-Mail-Bestätigungsvorgang und erwartet, dass er zur App zurückkehrt, um sein 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, dass er zu seiner mobilen App und nicht zum Browser zurückkehrt.

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 einer 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-Konsole als autorisierte Domain hinzugefügt 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 firebase.auth.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 Abfrageparameter continueUrl im Deeplink des Hosting-Links.
iOS ({bundleId: string}|undefined) Legt die iOS-Bundle-ID fest, um zu ermitteln, ob ein nur für das Web oder für Mobilgeräte vorgesehener Link auf einem Apple-Gerät geöffnet werden soll.Firebase Authentication
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) Legt den Android-Paketnamen fest, damit Firebase Authentication ermitteln kann, ob ein nur für das Web oder für Mobilgeräte vorgesehener Link erstellt werden soll, der auf einem Android-Gerät geöffnet wird.
handleCodeInApp (boolean|undefined) 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, sofern installiert.
linkDomain (string|undefined) Wenn für ein Projekt benutzerdefinierte Hosting-Linkdomains 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).
dynamicLinkDomain (string|undefined) Verworfen. Geben Sie diesen Parameter nicht an.

Im folgenden Beispiel wird gezeigt, wie ein E-Mail-Bestätigungslink gesendet wird, der zuerst in einer mobilen App mit der benutzerdefinierten Hosting-Domaincustom-domain.com geöffnet wird. Der Deeplink enthält die Nutzlast der Weiterleitungs-URL https://www.example.com/?email=user@example.com.

const actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
  },
  handleCodeInApp: true,
  // Specify a custom Hosting link domain to use. The domain must be
  // configured in Firebase Hosting and owned by the project.
  linkDomain: "custom-domain.com"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

Firebase Authentication verwendet Firebase Hosting, wenn ein Link gesendet wird, der in einer mobilen App geöffnet werden soll. Damit du diese Funktion nutzen kannst, müssen Hosting-Links in der Firebase-Konsole konfiguriert werden.

  1. So konfigurieren Sie Android-Anwendungen:

    1. Wenn Sie diese Links über Ihre Android-Anwendung verarbeiten möchten, muss der Paketname Ihrer App in den Projekteinstellungen der Firebase-Konsole angegeben werden. Außerdem müssen die SHA-1- und SHA-256-Hashwerte 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 über Ihre iOS-App verarbeiten möchten, müssen Sie die Hosting-Linkdomain als verknüpfte Domain in Ihren App-Funktionen konfigurieren.
    2. Weitere Informationen finden Sie unter Anleitung zum Empfangen von iOS-Hosting-Links.

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 firebase.auth.ActionCodeSettings-Objekt handleCodeInApp auf false gesetzt. Eine iOS-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 Hosting-Link, dessen Nutzlast die im ActionCodeSettings-Objekt angegebene URL ist.

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. 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 firebase.auth.ActionCodeSettings-Objekt handleCodeInApp auf true gesetzt. Außerdem müssen Sie den Android-Paketnamen oder die iOS-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 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 an den Nutzer gesendete Link für die mobile 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 ü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.