Status in E-Mail-Aktionen übergeben

Sie können den Status über eine Weiter-URL übergeben, wenn Sie E-Mail-Aktionen für Passwörter senden setzt die E-Mail-Adresse eines Nutzers zurück oder verifiziert sie. 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. Die Nutzenden haben jedoch möglicherweise und lösen den Vorgang 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 Anwendung 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.

  • Grundsätzlich gilt: Wenn ein Nutzer das Passwort oder die E-Mail-Bestätigung eine Apple-App, die den Ablauf innerhalb der App abschließen soll die Möglichkeit, ist 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 Weiter-URL sicher übergeben werden kann, muss die Domain für die URL in der Firebase-Konsole 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 dort noch nicht aufgeführt ist.

Beim Senden einer E-Mail zum Zurücksetzen des Passworts oder einer Bestätigungs-E-Mail muss eine FIRActionCodeSettings-Instanz angegeben werden. Diese Schnittstelle verwendet die folgenden Parameter:

Swift

Parameter Typ Beschreibung
URL String

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

  • 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 Bundle-ID fest. In folgenden Fällen wird versucht, den Link in einer Apple-App zu öffnen: wenn es installiert ist. Die App muss in der Konsole registriert sein. Falls nein Die Bundle-ID ist angegeben. Der Wert dieses Felds wird auf die Bundle-ID von das Haupt-Bundle der App.
androidPackageName String 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 ist noch nicht installiert. 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 wird. Der Nutzer wird zum Play Store weitergeleitet, um die App zu aktualisieren. Android-App muss in der Console registriert sein.
handleCodeInApp Bool Ob der Link zur E-Mail-Aktion zuerst in einer mobilen App oder über einen Weblink geöffnet wird. Der Standardwert ist "false". Wenn die Richtlinie auf „true“ gesetzt ist, wird als universellen Link oder Android-App-Link gesendet und wird geöffnet von der App, falls installiert. Im falschen Fall wird der Code an die Web-Widget zuerst und dann weiter zur App, wenn installiert haben.
dynamicLinkDomain String Hiermit wird die Dynamic Link-Domain (oder ‑Subdomain) festgelegt, die für den aktuellen Link verwendet werden soll, wenn er mit Firebase Dynamic Links geöffnet werden soll. Als mehrere dynamische Creatives Linkdomains pro Projekt konfiguriert werden, enthält dieses Feld eine Option explizit auszuwählen. Wenn keine angegeben ist, wird die erste Domain wird standardmäßig verwendet.

Objective-C

Parameter Typ Beschreibung
URL NS-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 NSString Legt die Bundle-ID fest. Dadurch wird versucht, den Link in einer Apple-App zu öffnen, sofern diese installiert ist. Die App muss in der Konsole registriert sein.
androidPackageName NSString Legt den Android-Paketnamen fest. Dadurch wird versucht, den Link in einer Android-App zu öffnen, sofern diese installiert ist.
androidInstallIfNotAvailable 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 NSString 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 zur 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 an die Web-Widget zuerst und dann weiter zur App, wenn installiert haben.
dynamicLinkDomain NSString Legt die Domain (oder Subdomain) für den dynamischen Link fest, die für den aktuellen Link verwendet werden soll ob 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 Weiterleitung https://www.example.com/?email=user@example.com.

Swift


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,
                                         minimumVersion:"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.
})

Objective-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 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 Dynamic Links-Nutzungsbedingungen noch nicht akzeptiert und ein Dynamic Links erstellt haben holen Sie dies jetzt nach.

      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 den eingehenden Link abfangen.

  2. So konfigurieren Sie Android-Anwendungen:

    1. Wenn du vorhast, diese Links von deiner Android-App aus zu handhaben, Der Android-Paketname muss in der Firebase Console angegeben werden Projekteinstellungen. 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 konfigurieren in die Datei „AndroidManifest.xml“.
    3. Weitere Informationen finden Sie unter Anleitung zum Empfangen von Android-Dynamic 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 (FDL) als Verknüpfte Domain in den App-Funktionen.
    3. Wenn Sie Ihre App für iOS-Version 8 oder niedriger bereitstellen möchten, müssen Sie Ihre Paket-ID als benutzerdefiniertes Schema für eingehende URLs.
    4. Weitere Informationen hierzu finden Sie unter Anleitung für Dynamic Links der 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 handleCodeInApp im Objekt FIRActionCodeSettings (Obj-C) oder ActionCodeSettings (Swift) 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 in den E-Mail-Aktionsvorlagen konfigurierte URL . 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 lautet der Link im Abfrageparameter continueURL einen FDL-Link, dessen Nutzlast dem URL entspricht, das in der ActionCodeSettings angegeben ist -Objekt enthält. Du kannst den von deiner App eingehenden Link abfangen und verarbeiten. ohne zusätzliche Abhängigkeit, empfehlen wir die Verwendung der FDL-Clientbibliothek, 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-Apps können Sie auch mit androidInstallIfNotAvailable festlegen, Die App soll installiert werden, wenn das Gerät dies unterstützt und dies noch nicht der Fall ist. installiert haben. Wenn der Link von einem Gerät angeklickt wird, das die mobile Anwendung nicht unterstützt, wird er stattdessen über eine Webseite geöffnet. Setzen Sie dazu handleCodeInApp auf true im FIRActionCodeSettings (Obj-C) oder ActionCodeSettings (Swift). 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 URL. Für alle Projekte wird eine Standard-ID 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 URL des Aktionscodes mit den Abfrageparametern oobCode, mode, apiKey und continueUrl ist. Letzteres wird die Original-URL gemäß den Angaben in FIRActionCodeSettings (Obj-C) oder ActionCodeSettings-Objekt (Swift). 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.

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