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 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-/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 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 noch nicht dort aufgeführt ist.
Beim Senden einer E-Mail zum Zurücksetzen des Passworts oder einer Bestätigungs-E-Mail muss eine Instanz von ActionCodeSettings angegeben werden. Sie kann mit der zugehörigen Klasse ActionCodeSettings.Builder erstellt werden, die die folgenden Methoden enthält:
Methode | Beschreibung |
---|---|
setUrl(String url) |
Hiermit wird der Link (Status-/Fortsetzungs-URL) festgelegt, der in verschiedenen Kontexten unterschiedliche Bedeutungen hat:
|
setIOSBundleId(String iOSBundleId) |
Legt die iOS-Bundle-ID fest. Dadurch wird versucht, den Link in einer iOS-App zu öffnen, sofern diese installiert ist. Die iOS-App muss in der Console registriert sein. |
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) |
Legt den Android-Paketnamen fest. Dadurch wird versucht, den Link in einer Android-App zu öffnen, sofern diese installiert ist. Wenn „installIfNotAvailable“ auf „true “ festgelegt ist, wird angegeben, ob die Android-App installiert werden soll, wenn das Gerät sie unterstützt und sie noch nicht installiert ist. 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. |
setHandleCodeInApp(boolean status) |
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, falls installiert. |
setDynamicLinkDomain(String dynamicLinkDomain) |
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. 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 geöffnet wird (iOS-App com.example.ios
oder Android-App com.example.android
). Der Deeplink enthält die Nutzlast der Weiterleitungs-URL https://www.example.com/?email=user@example.com
.
Kotlin
val auth = Firebase.auth val user = auth.currentUser!! val url = "http://www.example.com/verify?uid=" + user.uid val actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build() user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener { task -> if (task.isSuccessful) { Log.d(TAG, "Email sent.") } }
Java
FirebaseAuth auth = FirebaseAuth.getInstance(); FirebaseUser user = auth.getCurrentUser(); String url = "http://www.example.com/verify?uid=" + user.getUid(); ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() .setUrl(url) .setIOSBundleId("com.example.ios") // The default for this is populated with the current android package name. .setAndroidPackageName("com.example.android", false, null) .build(); user.sendEmailVerification(actionCodeSettings) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Email sent."); } } });
Firebase Dynamic Links konfigurieren
Firebase Auth verwendet Firebase Dynamic Links, wenn ein Link gesendet wird, der in einer mobilen Anwendung geöffnet werden soll. Damit Sie diese Funktion verwenden können, müssen Dynamic Links in der Firebase Console konfiguriert werden.
Firebase Dynamic Links aktivieren:
- Öffnen Sie in der Firebase Console den Bereich Dynamic Links.
-
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.
So konfigurieren Sie Android-Anwendungen:
- 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.
- Außerdem müssen Sie den Intent-Filter für den Deeplink in der Datei „AndroidManifest.xml“ konfigurieren.
- Weitere Informationen finden Sie unter Anleitung zum Empfangen von Android-Dynamic Links.
iOS-Anwendungen konfigurieren:
- 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.
- Außerdem müssen Sie die universelle Link-Domain der FDL als zugehörige Domain in Ihren App-Funktionen konfigurieren.
- 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.
- 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.
Rufen Sie dazu setHandleCodeInApp(false)
im ActionCodeSettings.Builder-Objekt auf. 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 FDL-Link, dessen Nutzlast die im ActionCodeSettings
-Objekt angegebene URL
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.
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-Anwendungen können Sie über den booleschen Wert installIfNotAvailable
angeben, dass die App installiert werden soll, wenn das Gerät sie unterstützt und sie noch nicht 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.
Rufen Sie dazu setHandleCodeInApp(true)
im ActionCodeSettings.Builder-Objekt auf. 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 FDL-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 wurde. Sie können den eingehenden Link aus 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-Ablauf, 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.