Ü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. Eine Newsletter-App kann beispielsweise verlangen, dass der Benutzer seine E-Mail-Adresse bestätigt, bevor er sich anmeldet. Der Benutzer würde den E-Mail-Verifizierungsablauf durchlaufen und erwarten, dass er zur App zurückkehrt, um sein Abonnement abzuschließen.

  • Wenn ein Benutzer in einer Apple-App mit dem Zurücksetzen eines Passworts oder einer E-Mail-Bestätigung beginnt, erwartet er im Allgemeinen, dass er den Vorgang innerhalb der App abschließt. die Möglichkeit, den Status über eine Continue-URL zu übergeben, macht dies möglich.

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 FIRActionCodeSettings Instanz muss bereitgestellt werden, wenn eine E-Mail zum Zurücksetzen des Passworts oder eine Bestätigungs-E-Mail gesendet wird. Diese Schnittstelle übernimmt die folgenden Parameter:

Schnell

Parameter Typ Beschreibung
URL Schnur

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.
iOSBundleID Schnur Legt die Bundle-ID fest. Dadurch wird versucht, den Link in einer Apple-App zu öffnen, falls diese installiert ist. Die App muss in der Konsole registriert werden. Wenn keine Bündel-ID angegeben wird, wird der Wert dieses Felds auf die Bündel-ID des Hauptbündels der App gesetzt.
androidPackageName Schnur Legt den Android-Paketnamen fest. Dadurch wird versucht, den Link in einer Android-App zu öffnen, falls diese installiert ist.
androidInstallIfNotAvailable Bool Gibt an, 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 einen Paketnamen angegeben wird, wird ein Fehler ausgegeben, der erklärt, dass der Paketname in Verbindung mit diesem Feld angegeben werden muss.
androidMinimumVersion Schnur Die Mindestversion der App, die in diesem Flow unterstützt wird. 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.
handleCodeInApp Bool 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.
dynamicLinkDomain Schnur 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.

Ziel c

Parameter Typ Beschreibung
URL NSString

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.
iOSBundleID NSString Legt die Bundle-ID fest. Dadurch wird versucht, den Link in einer Apple-App zu öffnen, falls diese installiert ist. Die App muss in der Konsole registriert werden.
androidPackageName NSString Legt den Android-Paketnamen fest. Dadurch wird versucht, den Link in einer Android-App zu öffnen, falls diese installiert ist.
androidInstallIfNotAvailable BOOL gibt an, 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 einen Paketnamen angegeben wird, wird ein Fehler ausgegeben, der erklärt, dass der Paketname in Verbindung mit diesem Feld angegeben werden muss.
androidMinimumVersion NSString Die Mindestversion der App, die in diesem Flow unterstützt wird. 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.
handleCodeInApp BOOL 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.
dynamicLinkDomain NSString 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 dynamischer Firebase-Link geöffnet wird, indem Sie die benutzerdefinierte Domäne für dynamische Links example.page.link verwenden (iOS-App com.example.ios oder Android-App com.example.android , wo die App installiert wird, falls sie noch nicht installiert ist und die Mindestversion 12 ist). Der Deep-Link enthält die Nutzlast der Fortsetzungs-URL https://www.example.com/?email=user@example.com .

Schnell


var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minumumVersion:"12")
// When multiple custom dynamic link domains are defined, specify which one to use.
actionCodeSettings.dynamicLinkDomain = "example.page.link"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Ziel c

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 // When multiple custom dynamic link domains are defined, specify which one to use.
 actionCodeSettings.dynamicLinkDomain = @"example.page.link";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification 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 Apple-Anwendungen:

    1. Wenn Sie diese Links von Ihrer Anwendung aus 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 FDL-Link-Domäne als zugeordnete Domäne in Ihren Anwendungsfunktionen konfigurieren.
    3. Wenn Sie beabsichtigen, Ihre Anwendung an die iOS-Versionen 8 und darunter zu verteilen, müssen Sie Ihre Paket-ID als benutzerdefiniertes Schema für eingehende URLs festlegen.
    4. Weitere Informationen hierzu finden Sie in der Anleitung zum Empfangen dynamischer Links von Apple-Plattformen .

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. Dazu wird handleCodeInApp im FIRActionCodeSettings (Obj-C) oder ActionCodeSettings (Swift) auf false gesetzt. Obwohl eine Bundle-ID oder ein Android-Paketname nicht erforderlich ist, 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 androidInstallIfNotAvailable , dass die App installiert werden soll, wenn das Gerät dies unterstützt und sie nicht bereits 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. Dazu wird handleCodeInApp im FIRActionCodeSettings (Obj-C) oder ActionCodeSettings (Swift) auf true gesetzt. Der Android-Paketname oder die Paket-ID der mobilen Anwendung muss ebenfalls angegeben werden. Wenn keine mobile App verfügbar ist, wird hier die Fallback-Web-URL verwendet, die im Abschnitt E-Mail-Aktionsvorlagen konfiguriert ist. 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 FIRActionCodeSettings (Obj-C) oder ActionCodeSettings (Swift) 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.