Mobile Apps müssen manchmal mit Benutzern interagieren und sie durch das Senden von E-Mails zu bestimmten Aktionen auffordern.
Die Firebase Client SDKs bieten die Möglichkeit, Benutzern E-Mails mit Links zu senden, die sie zum Zurücksetzen von Passwörtern, zur Überprüfung der E-Mail-Adresse und zur E-Mail-basierten Anmeldung verwenden können. Diese vorlagenbasierten E-Mails werden von Google gesendet und können nur eingeschränkt angepasst werden.
Wenn Sie stattdessen Ihre eigenen E-Mail-Vorlagen und Ihren eigenen E-Mail-Zustelldienst verwenden möchten, wird auf dieser Seite erläutert, wie Sie mit dem Firebase Admin SDK programmgesteuert die Aktionslinks für die oben genannten Flows generieren, die Sie in E-Mails an Ihre Benutzer einfügen können.
Dies bringt die folgenden Vorteile mit sich:
- E-Mail-Vorlagen anpassen. Dazu gehört die Möglichkeit, neue Stile und benutzerdefiniertes Branding hinzuzufügen, Formulierungen und Logos zu ändern, Benutzer mit dem Vornamen statt mit dem vollständigen Namen anzusprechen und so weiter.
- Wenden Sie je nach Kontext unterschiedliche Vorlagen an. Wenn der Benutzer beispielsweise seine E-Mail-Adresse bestätigt, um einen Newsletter zu abonnieren, muss der Kontext möglicherweise im E-Mail-Inhalt bereitgestellt werden. Ein weiteres Beispiel ist die Anmeldung per E-Mail-Link: In einem Szenario kann dies vom selben Benutzer oder als Einladung eines anderen Benutzers ausgelöst werden. Der Kontext müsste in der E-Mail enthalten sein.
- Lokalisieren Sie benutzerdefinierte E-Mail-Vorlagen.
- Möglichkeit, den Link von einer sicheren Serverumgebung aus zu generieren.
- Möglichkeit, anzupassen, wie der Link über eine mobile App oder einen Browser geöffnet werden soll, und wie zusätzliche Statusinformationen übergeben werden usw.
- Möglichkeit zum Anpassen der für mobile App-Flows verwendeten dynamischen Linkdomäne beim Erstellen des E-Mail-Aktionslinks und sogar zum Angeben einer anderen dynamischen Linkdomäne je nach Kontext oder mobiler App.
ActionCodeSettings initialisieren
Bevor Sie einen E-Mail-Aktionslink generieren können, müssen Sie möglicherweise eine ActionCodeSettings
-Instanz initialisieren.
ActionCodeSettings
können Sie einen zusätzlichen Status über eine Fortsetzungs-URL übergeben, auf die zugegriffen werden kann, nachdem der Benutzer auf den E-Mail-Link geklickt hat. Dies bietet dem Benutzer auch die Möglichkeit, nach Abschluss der Aktion zur App zurückzukehren. Darüber hinaus können Sie angeben, ob der E-Mail-Aktionslink direkt von einer mobilen Anwendung, wenn sie installiert ist, oder von einem Browser verarbeitet werden soll.
Für Links, die über eine mobile App geöffnet werden sollen, müssen Sie Firebase Dynamic Links aktivieren und einige Aufgaben ausführen, um diese Links von Ihrer mobilen App zu erkennen. Lesen Sie die Anweisungen zum Konfigurieren von Firebase Dynamic Links für E-Mail-Aktionen.
Geben Sie zum Initialisieren einer ActionCodeSettings
-Instanz die folgenden Daten an:
Parameter | Typ | Beschreibung |
---|---|---|
url | Schnur | Setzt den Link (State/Continue URL), der in verschiedenen Kontexten unterschiedliche Bedeutungen hat:
|
iOS | ({bundleId: string}|undefiniert) | 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. |
android | ({packageName: string, installApp:boolean|undefiniert, minimumVersion: string|undefiniert}|undefiniert) | Legt den Android-Paketnamen fest. Dadurch wird versucht, den Link in einer Android-App zu öffnen, falls diese installiert ist. Wenn installApp übergeben wird, gibt es 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 packageName bereitgestellt wird, wird ein Fehler ausgegeben, der erklärt, dass der packageName in Verbindung mit diesem Feld bereitgestellt werden muss. 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 | (boolesch|undefiniert) | 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 | (Zeichenfolge|undefiniert) | 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 älteste 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 (Apple-App com.example.ios
oder Android-App com.example.android
wo die App installiert wird, falls sie noch nicht installiert ist, und die Mindestversion ist 12). Der Deep-Link enthält die Nutzlast der Continue-URL https://www.example.com/checkout?cartId=1234
. Die verwendete Domäne für dynamische Links ist coolapp.page.link
, die für die Verwendung mit Firebase Dynamic Links konfiguriert werden muss.
Node.js
const actionCodeSettings = {
// URL you want to redirect back to. The domain (www.example.com) for
// this URL must be whitelisted in the Firebase Console.
url: 'https://www.example.com/checkout?cartId=1234',
// This must be true for email link sign-in.
handleCodeInApp: true,
iOS: {
bundleId: 'com.example.ios',
},
android: {
packageName: 'com.example.android',
installApp: true,
minimumVersion: '12',
},
// FDL custom domain.
dynamicLinkDomain: 'coolapp.page.link',
};
Java
ActionCodeSettings actionCodeSettings = ActionCodeSettings.builder()
.setUrl("https://www.example.com/checkout?cartId=1234")
.setHandleCodeInApp(true)
.setIosBundleId("com.example.ios")
.setAndroidPackageName("com.example.android")
.setAndroidInstallApp(true)
.setAndroidMinimumVersion("12")
.setDynamicLinkDomain("coolapp.page.link")
.build();
Python
action_code_settings = auth.ActionCodeSettings(
url='https://www.example.com/checkout?cartId=1234',
handle_code_in_app=True,
ios_bundle_id='com.example.ios',
android_package_name='com.example.android',
android_install_app=True,
android_minimum_version='12',
dynamic_link_domain='coolapp.page.link',
)
gehen
actionCodeSettings := &auth.ActionCodeSettings{
URL: "https://www.example.com/checkout?cartId=1234",
HandleCodeInApp: true,
IOSBundleID: "com.example.ios",
AndroidPackageName: "com.example.android",
AndroidInstallApp: true,
AndroidMinimumVersion: "12",
DynamicLinkDomain: "coolapp.page.link",
}
C#
var actionCodeSettings = new ActionCodeSettings()
{
Url = "https://www.example.com/checkout?cartId=1234",
HandleCodeInApp = true,
IosBundleId = "com.example.ios",
AndroidPackageName = "com.example.android",
AndroidInstallApp = true,
AndroidMinimumVersion = "12",
DynamicLinkDomain = "coolapp.page.link",
};
Weitere Informationen finden Sie unter Zustandsübergabe in E-Mail-Aktionen .
E-Mail-Link zum Zurücksetzen des Passworts generieren
Geben Sie zum Generieren eines Links zum Zurücksetzen des Kennworts die E-Mail-Adresse des vorhandenen Benutzers und ein optionales ActionCodeSettings
-Objekt an. Der Vorgang wird mit dem E-Mail-Aktionslink aufgelöst. Die verwendete E-Mail muss zu einem bestehenden Benutzer gehören.
Node.js
// Admin SDK API to generate the password reset link.
const userEmail = 'user@example.com';
getAuth()
.generatePasswordResetLink(userEmail, actionCodeSettings)
.then((link) => {
// Construct password reset email template, embed the link and send
// using custom SMTP server.
return sendCustomPasswordResetEmail(userEmail, displayName, link);
})
.catch((error) => {
// Some error occurred.
});
Java
String email = "user@example.com";
try {
String link = FirebaseAuth.getInstance().generatePasswordResetLink(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
System.out.println("Error generating email link: " + e.getMessage());
}
Python
email = 'user@example.com'
link = auth.generate_password_reset_link(email, action_code_settings)
# Construct password reset email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
gehen
email := "user@example.com"
link, err := client.PasswordResetLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
log.Fatalf("error generating email link: %v\n", err)
}
// Construct password reset template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
C#
var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GeneratePasswordResetLinkAsync(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
Nachdem der Link generiert wurde, kann er in die benutzerdefinierte E-Mail zum Zurücksetzen des Passworts eingefügt und dann über einen benutzerdefinierten SMTP-Server per E-Mail an den entsprechenden Benutzer gesendet werden.
Wenn Sie nicht die standardmäßige Zielseite zum Zurücksetzen des Passworts verwenden und Ihren eigenen benutzerdefinierten Handler erstellen, finden Sie weitere Informationen unter Erstellen benutzerdefinierter E-Mail-Aktions-Handler .
E-Mail-Bestätigungslink generieren
Um einen E-Mail-Bestätigungslink zu generieren, geben Sie die unbestätigte E-Mail-Adresse des vorhandenen Benutzers und ein optionales ActionCodeSettings
-Objekt an. Der Vorgang wird mit dem E-Mail-Aktionslink aufgelöst. Die verwendete E-Mail muss zu einem bestehenden Benutzer gehören.
Node.js
// Admin SDK API to generate the email verification link.
const useremail = 'user@example.com';
getAuth()
.generateEmailVerificationLink(useremail, actionCodeSettings)
.then((link) => {
// Construct email verification template, embed the link and send
// using custom SMTP server.
return sendCustomVerificationEmail(useremail, displayName, link);
})
.catch((error) => {
// Some error occurred.
});
Java
String email = "user@example.com";
try {
String link = FirebaseAuth.getInstance().generateEmailVerificationLink(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
System.out.println("Error generating email link: " + e.getMessage());
}
Python
email = 'user@example.com'
link = auth.generate_email_verification_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
gehen
email := "user@example.com"
link, err := client.EmailVerificationLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
log.Fatalf("error generating email link: %v\n", err)
}
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
C#
var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateEmailVerificationLinkAsync(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
Nachdem der Link generiert wurde, kann er in die benutzerdefinierte Bestätigungs-E-Mail eingefügt und dann über einen benutzerdefinierten SMTP-Server per E-Mail an den entsprechenden Benutzer gesendet werden.
Wenn Sie nicht die Standardzielseite für die E-Mail-Bestätigung verwenden und Ihren eigenen benutzerdefinierten Handler erstellen, finden Sie weitere Informationen unter Erstellen benutzerdefinierter E-Mail-Aktions-Handler .
E-Mail-Link für die Anmeldung generieren
Bevor Sie Benutzer mit der Anmeldung per E-Mail-Link authentifizieren können, müssen Sie die Anmeldung per E-Mail-Link für Ihr Firebase-Projekt aktivieren .
Geben Sie zum Generieren eines Anmeldelinks die E-Mail-Adresse des Benutzers und ein ActionCodeSettings
-Objekt an. Das ActionCodeSettings
-Objekt ist in diesem Fall erforderlich, um Informationen darüber bereitzustellen, wohin der Benutzer zurückkehren soll, nachdem auf den Link geklickt wurde, um die Anmeldung abzuschließen. Der Vorgang wird mit dem E-Mail-Aktionslink aufgelöst.
Im Gegensatz zum Zurücksetzen des Passworts und der E-Mail-Verifizierung muss die verwendete E-Mail-Adresse nicht unbedingt einem vorhandenen Benutzer gehören, da dieser Vorgang verwendet werden kann, um neue Benutzer per E-Mail-Link in Ihrer App anzumelden.
Node.js
// Admin SDK API to generate the sign in with email link.
const useremail = 'user@example.com';
getAuth()
.generateSignInWithEmailLink(useremail, actionCodeSettings)
.then((link) => {
// Construct sign-in with email link template, embed the link and
// send using custom SMTP server.
return sendSignInEmail(useremail, displayName, link);
})
.catch((error) => {
// Some error occurred.
});
Java
String email = "user@example.com";
try {
String link = FirebaseAuth.getInstance().generateSignInWithEmailLink(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
System.out.println("Error generating email link: " + e.getMessage());
}
Python
email = 'user@example.com'
link = auth.generate_sign_in_with_email_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
gehen
email := "user@example.com"
link, err := client.EmailSignInLink(ctx, email, actionCodeSettings)
if err != nil {
log.Fatalf("error generating email link: %v\n", err)
}
// Construct sign-in with email link template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
C#
var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateSignInWithEmailLinkAsync(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
Nachdem der Link generiert wurde, kann er in die benutzerdefinierte Anmelde-E-Mail eingefügt und dann über einen benutzerdefinierten SMTP-Server per E-Mail an den entsprechenden Benutzer gesendet werden.
Erfahren Sie mehr über die Authentifizierung von Benutzern bei Firebase mithilfe von E-Mail-Links . Dies hilft dabei, Informationen darüber bereitzustellen, wie die Anmeldung abgeschlossen werden kann, nachdem der Benutzer auf den Link geklickt hat und zur App zurückgeleitet wird.