Status in E-Mail-Aktionen übergeben

Sie können den Status über eine „continue“-URL übergeben, wenn Sie E-Mail-Aktionen zum Zurücksetzen von Passwörtern oder zum Bestätigen der E-Mail-Adresse eines Nutzers senden. Dadurch kann der Nutzer nach Abschluss der Aktion zur App zurückkehren. Außerdem können Sie festlegen, ob der E‑Mail-Aktionslink direkt über eine mobile App verarbeitet werden soll, wenn diese installiert ist, anstatt über eine Webseite.

Dies kann in den folgenden gängigen 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. Es kann jedoch sein, dass der Nutzer sein Passwort vergessen hat und daher den Ablauf zum Zurücksetzen des Passworts auslöst. Am Ende des Ablaufs erwartet der Nutzer, dass er zu dem Bereich der App zurückkehrt, auf den er zugreifen wollte.

  • Eine Anwendung darf nur Zugriff auf bestätigte Konten bieten. Bei einer Newsletter-App muss der Nutzer beispielsweise seine E-Mail-Adresse bestätigen, bevor er den Newsletter abonnieren 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 einen Vorgang zum Zurücksetzen des Passworts oder zur E-Mail-Bestätigung startet, erwartet er in der Regel, dass er den Vorgang in der App abschließen kann. Die Möglichkeit, den Status über die Continue-URL zu übergeben, macht dies möglich.

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

Status einer Continue-URL in E-Mail-Aktionen übergeben

Damit eine URL zur Weiterleitung sicher übergeben werden kann, muss die Domain für die URL in der Firebase-Konsole auf der weißen Liste stehen. Dies erfolgt im Bereich Authentifizierung, indem Sie diese Domain der Liste Autorisierte Domains auf dem Tab Anmeldemethode hinzufügen, sofern 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 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.
iOSBundleID String Legt die iOS-Paket-ID fest, damit Firebase Authentication ermitteln kann, ob ein reiner Weblink oder ein mobiler Link erstellt werden soll, der auf einem Apple-Gerät geöffnet wird.
androidPackageName String Legt den Android-Paketnamen fest, damit Firebase Authentication ermitteln kann, ob ein reiner Weblink oder ein mobiler Link erstellt werden soll, der auf einem Android-Gerät geöffnet wird.
handleCodeInApp Bool Gibt an, ob der E-Mail-Aktionslink zuerst in einer mobilen App oder einem Weblink geöffnet wird. Der Standardwert ist "false". 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, sofern sie installiert ist. Im Fall „false“ wird der Code zuerst an das Web-Widget gesendet und dann wird bei „Weiter“ zur App weitergeleitet, sofern sie installiert ist.
linkDomain String Wenn für ein Projekt benutzerdefinierte Hosting-Link-Domains 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 Verworfen. Geben Sie diesen Parameter nicht an.

Objective-C

Parameter Typ Beschreibung
URL NSString

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 dies der Abfrageparameter continueUrl im Deeplink des Hosting-Links.
iOSBundleID NSString Legt die iOS-Bundle-ID fest, damit Firebase Authentication ermitteln kann, ob ein reiner Weblink oder ein mobiler Link erstellt werden soll, der auf einem Android- oder Apple-Gerät geöffnet wird.
androidPackageName NSString Legt den Android-Paketnamen fest, damit Firebase Authentication ermitteln kann, ob ein reiner Weblink oder ein mobiler Link erstellt werden soll, der auf einem Android- oder Apple-Gerät geöffnet wird.
handleCodeInApp BOOL Gibt an, ob der E-Mail-Aktionslink zuerst in einer mobilen App oder einem Weblink geöffnet wird. Der Standardwert ist "false". 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, sofern sie installiert ist. Im Fall „false“ wird der Code zuerst an das Web-Widget gesendet und dann wird bei „Weiter“ zur App weitergeleitet, sofern sie installiert ist.
linkDomain NSString Wenn benutzerdefinierte Hosting-Linkdomains für ein Projekt 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 NSString Verworfen. Geben Sie diesen Parameter nicht an.

Das folgende Beispiel veranschaulicht, wie Sie einen Link zur E-Mail-Bestätigung senden, der zuerst in einer mobilen App geöffnet wird, indem Sie die benutzerdefinierte Hosting-Linkdomain custom-domain.com verwenden. Der Deeplink enthält die Nutzlast der Continue-URL 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")
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
actionCodeSettings.linkDomain = "custom-domain.com"
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;
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
 actionCodeSettings.linkDomain = @"custom-domain.com";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

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

  1. Apple-Anwendungen konfigurieren:

    1. Wenn Sie diese Links in Ihrer Anwendung verarbeiten möchten, müssen Sie die Linkdomain Hosting als zugeordnete Domain in den Funktionen Ihrer Anwendung konfigurieren.
    2. Weitere Informationen zum Empfangen von iOS-Hosting-Links
  2. Android-Apps konfigurieren:

    1. Wenn Sie diese Links in Ihrer Android-Anwendung verarbeiten möchten, muss der Paketname Ihrer App in den Projekteinstellungen der Firebase-Konsole angegeben werden. Außerdem müssen der SHA‑1- und der SHA‑256-Fingerabdruck 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.

E‑Mail-Aktionen in einer Webanwendung verarbeiten

Sie können festlegen, ob der Aktionscodelink zuerst von einer Webanwendung verarbeitet und dann 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 zurückgeleitet werden.

Die hier verwendete Web-URL ist die, die im Abschnitt „E-Mail-Aktionsvorlagen“ konfiguriert ist. Für alle Projekte wird standardmäßig eine 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 das im ActionCodeSettings-Objekt angegebene URL ist.

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

E‑Mail-Aktionen in einer mobilen Anwendung verarbeiten

Sie können festlegen, ob der Aktionscodelink zuerst in Ihrer mobilen Anwendung verarbeitet werden soll, sofern sie installiert ist. Wenn auf den Link auf einem Gerät geklickt wird, das die mobile App nicht unterstützt, wird er stattdessen auf einer Webseite geöffnet. Dazu wird handleCodeInApp im Objekt FIRActionCodeSettings (Obj-C) oder ActionCodeSettings (Swift) auf true gesetzt. Der Android-Paketname oder die Bundle-ID der mobilen Anwendung muss ebenfalls angegeben werden. Die hier verwendete Fallback-Web-URL, wenn keine mobile App verfügbar ist, ist die, die im Abschnitt „E-Mail-Aktionsvorlagen“ konfiguriert ist. Für alle Projekte wird ein Standard-Servicekonto 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 zur mobilen 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 Objekt FIRActionCodeSettings (Obj-C) oder ActionCodeSettings (Swift) angegeben ist. Der Aktionscode kann direkt über eine mobile Anwendung angewendet werden, ähnlich wie im Webflow, 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 aus dem oobCode-Abfrageparameter aus dem Deeplink geparst und dann über applyActionCode angewendet werden, damit die Änderung wirksam wird, d.h. die E-Mail-Adresse bestätigt wird.