Status in E-Mail-Aktionen übergeben

Sie können den Status über eine Fortsetzungs-URL übergeben, wenn E-Mail-Aktionen zum Zurücksetzen von Passwörtern gesendet oder die E-Mail-Adresse eines Nutzers verifiziert wird. 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 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. Der Nutzer hat jedoch möglicherweise sein Passwort vergessen und löst daher den Vorgang zum Zurücksetzen des Passworts aus. Am Ende des Ablaufs erwartet der Nutzer, zu dem Bereich der App zurückzukehren, auf den er zugreifen wollte.

  • Eine Anwendung darf nur Zugriff auf bestätigte Konten bieten. Beispielsweise kann es sein, dass der Nutzer in einem Newsletter seine E-Mail-Adresse bestätigen muss, bevor er das Abo abschließt. Der Nutzer durchläuft die E-Mail-Bestätigung und erwartet, zur App zurückzukehren, um sein Abo abzuschließen.

  • In anderen Fällen hat der Nutzer den Vorgang möglicherweise auf seinem Mobilgerät gestartet und erwartet, dass er nach der Bestätigung zu seiner mobilen App statt 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-/Fortsetzungs-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 als autorisierte Domain hinzugefügt werden. Dazu fügen Sie die Domain im Bereich Authentifizierung auf dem Tab Anmeldemethode zur Liste Autorisierte Domains hinzu, sofern sie dort nicht bereits vorhanden ist.

Wenn eine E-Mail zum Zurücksetzen des Passworts oder eine Bestätigungs-E-Mail gesendet wird, muss eine firebase.auth.ActionCodeSettings-Instanz angegeben werden. Diese Schnittstelle verwendet die folgenden Parameter:

Parameter Typ Beschreibung
url String

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 das der continueUrl-Abfrageparameter im Deeplink des dynamischen Links.
iOS ({bundleId: string}|undefined) Legt die iOS-Paket-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 sein.
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) Legt den Android-Paketnamen fest. Dadurch wird versucht, den Link in einer Android-App zu öffnen, sofern diese installiert ist. Wenn installApp übergeben wird, wird angegeben, ob die Android-App installiert werden soll, wenn das Gerät dies 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. 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 (boolean|undefined) Ob der Link für die E-Mail-Aktion zuerst in einer mobilen App oder über einen Weblink geöffnet wird. 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. Im falschen Fall wird der Code zuerst an das Web-Widget gesendet und dann beim Fortfahren zur App, falls installiert.
dynamicLinkDomain (string|undefined) Legt die Domain (oder Subdomain) für den dynamischen Link 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.

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 URL-Nutzlast für die Weiterleitunghttps://www.example.com/?email=user@example.com.

var actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  handleCodeInApp: true,
  // When multiple custom dynamic link domains are defined, specify which
  // one to use.
  dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

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

  1. Aktivieren Sie Firebase Dynamic Links:

    1. Öffnen Sie in der Firebase-Konsole den Abschnitt Dynamic Links.
    2. Wenn Sie die Dynamic Links-Nutzungsbedingungen noch nicht akzeptiert und keine Dynamic Links-Domain erstellt haben, tun Sie dies jetzt.

      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

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

  2. Android-Anwendungen konfigurieren:

    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-Hashwert 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 dazu finden Sie unter Android Dynamic Links empfangen.
  3. iOS-Anwendungen konfigurieren:

    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. 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-Linkdomain als verknüpfte Domain in den Anwendungsfunktionen konfigurieren.
    3. Wenn Sie Ihre App für iOS-Versionen 8 und niedriger bereitstellen möchten, müssen Sie Ihre iOS-Bundle-ID als benutzerdefiniertes Schema für eingehende URLs festlegen.
    4. Weitere Informationen finden Sie unter Anleitung zum Empfangen von iOS-Dynamic 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. Setzen Sie dazu handleCodeInApp im Objekt firebase.auth.ActionCodeSettings auf false. 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 „E-Mail-Aktionsvorlagen“ konfigurierte. Für alle Projekte wird eine Standard-URL 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 Ihrer Anwendung zwar ohne zusätzliche Abhängigkeit abfangen und verarbeiten, wir empfehlen jedoch, den Deeplink über die FDL-Clientbibliothek für Sie zu parsen.

Bei der Verarbeitung von E-Mail-Aktionen wie der E-Mail-Bestätigung muss der Aktionscode des Abfrageparameters oobCode aus dem Deeplink geparst und dann über applyActionCode angewendet werden, damit die Änderung wirksam wird, also die E-Mail-Adresse verifiziert wird.

E-Mail-Aktionen in einer mobilen App verarbeiten

Sie können angeben, ob der Aktionscode-Link zuerst in Ihrer mobilen Anwendung verarbeitet werden soll, wenn sie installiert ist. Bei Android-Apps können Sie auch über die android.installApp angeben, dass die App installiert werden soll, sofern das Gerät dies unterstützt und noch nicht installiert ist. Wird der Link auf einem Gerät angeklickt, das die mobile App 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-URL 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 die ursprüngliche URL, die im ActionCodeSettings-Objekt angegeben ist. 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 App angewendet werden. Das funktioniert ähnlich wie bei dem Webablauf, 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 des Abfrageparameters oobCode aus dem Deeplink geparst und dann über applyActionCode angewendet werden, damit die Änderung wirksam wird, also die E-Mail-Adresse verifiziert wird.