Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Generieren von E-Mail-Aktionslinks

Mobile Apps müssen manchmal mit Benutzern interagieren und sie auffordern, bestimmte Aktionen durch Senden von E-Mails auszuführen.

Die Firebase Admin-SDKs bieten die Möglichkeit, Benutzern E-Mails mit Links zu senden, die sie zum Zurücksetzen des Kennworts, zur Überprüfung der E-Mail-Adresse und zur E-Mail-basierten Anmeldung verwenden können. Diese 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, können Sie mit dem Firebase Admin SDK programmgesteuert die Aktionslinks für die oben genannten Flows generieren, die Sie in E-Mails an Ihre Benutzer aufnehmen können.

Dies hat folgende Vorteile:

  • Passen Sie E-Mail-Vorlagen an. Dies umfasst die Möglichkeit, neue Stile und benutzerdefiniertes Branding hinzuzufügen, Formulierungen und Logos zu ändern, Benutzer nach Vorname anstelle des vollständigen Namens anzusprechen und so weiter.
  • Wenden Sie je nach Kontext unterschiedliche Vorlagen an. Wenn der Benutzer beispielsweise seine E-Mail-Adresse überprüft, um einen Newsletter zu abonnieren, muss der Kontext möglicherweise im E-Mail-Inhalt angegeben werden. Ein weiteres Beispiel ist die Anmeldung per E-Mail-Link: In einem Szenario kann dies von demselben Benutzer oder als Einladung eines anderen Benutzers ausgelöst werden. Der Kontext müsste in der E-Mail enthalten sein.
  • Lokalisieren Sie angepasste E-Mail-Vorlagen.
  • Möglichkeit, den Link aus einer sicheren Serverumgebung zu generieren.
  • Möglichkeit zum Anpassen, wie der Link über eine mobile App oder einen Browser geöffnet werden soll und wie zusätzliche Statusinformationen usw. übergeben werden.
  • Möglichkeit, die für mobile App-Flows verwendete dynamische Linkdomäne beim Erstellen des E-Mail-Aktionslinks anzupassen und je nach Kontext oder mobiler App sogar eine andere dynamische Linkdomäne anzugeben.

Initialisieren Sie ActionCodeSettings

Bevor Sie einen E-Mail- ActionCodeSettings generieren können, müssen Sie möglicherweise eine ActionCodeSettings Instanz initialisieren.

ActionCodeSettings können Sie zusätzlichen Status über eine Weiter-URL übergeben, auf die ActionCodeSettings 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 bei der Installation oder von einem Browser aus 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 in Ihrer mobilen App zu erkennen. Weitere Informationen zum Konfigurieren von Firebase Dynamic Links für E-Mail-Aktionen finden Sie in den Anweisungen.

ActionCodeSettings die folgenden Daten an, um eine ActionCodeSettings Instanz zu initialisieren:

Parameter Art Beschreibung
url Zeichenfolge

Legt den Link (URL für Status / Weiter) fest, der in verschiedenen Kontexten unterschiedliche Bedeutungen hat:

  • Wenn der Link in den Webaktions-Widgets verarbeitet wird, ist dies der Deep Link im Abfrageparameter continueUrl .
  • Wenn der Link direkt in der App verarbeitet wird, ist dies der Abfrageparameter continueUrl im Deep Link des dynamischen Links.
iOS ({bundleId: string} | undefined) Legt die iOS-Bundle-ID fest. Dadurch wird versucht, den Link in einer iOS-App zu öffnen, wenn diese installiert ist. Die iOS-App muss in der Konsole registriert sein.
android ({packageName: string, installApp: boolean | undefined, minimalVersion: string | undefined} | undefined) Legt den Namen des Android-Pakets fest. Dadurch wird versucht, den Link in einer Android-App zu öffnen, wenn diese installiert ist. Wenn installApp wird, wird angegeben, 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 packageName , wird ein Fehler packageName , der erklärt, dass der packageName in Verbindung mit diesem Feld angegeben 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 sein.
handleCodeInApp (boolean | undefined) Gibt an, ob der E-Mail-Aktionslink zuerst in einer mobilen App oder einem Weblink geöffnet wird. Der Standardwert ist false. Bei true wird der Aktionscode-Link als Universal Link oder Android App Link gesendet und bei Installation von der App geöffnet. Im falschen Fall wird der Code zuerst an das Web-Widget gesendet und dann bei Fortfahren zur App umgeleitet, falls installiert.
dynamicLinkDomain (string | undefined) Legt die dynamische Linkdomäne (oder Subdomäne) fest, die für den aktuellen Link verwendet werden soll, wenn dieser mit Firebase Dynamic Links geöffnet werden soll. Da pro Projekt mehrere dynamische Verbindungsdomänen konfiguriert werden können, können Sie in diesem Feld explizit eine auswählen. Wenn keine angegeben ist, 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 Firebase Dynamic Link com.example.ios (iOS-App com.example.ios oder Android-App com.example.android auf der die App installiert wird, wenn sie nicht bereits installiert ist und Die Mindestversion ist 12). Der Deep Link enthält die Pay-URL für die Fortsetzung der 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 dynamischen Firebase-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 Übergeben des Status in E-Mail-Aktionen .

Geben Sie zum Generieren eines Kennwortrücksetzlinks die E-Mail- ActionCodeSettings des vorhandenen Benutzers und ein optionales ActionCodeSettings Objekt an. Der Vorgang wird mit dem E-Mail-Aktionslink aufgelöst. Die verwendete E-Mail muss einem vorhandenen Benutzer gehören.

Node.js

// Admin SDK API to generate the password reset link.
const userEmail = 'user@example.com';
admin
  .auth()
  .generatePasswordResetLink(userEmail, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(email, 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 E-Mail zum Zurücksetzen des benutzerdefinierten Kennworts eingefügt und dann über einen benutzerdefinierten SMTP-Server per E-Mail an den entsprechenden Benutzer gesendet werden.

Wenn Sie nicht die Standard-Zielseite zum Zurücksetzen des Kennworts verwenden und keinen eigenen benutzerdefinierten Handler erstellen, lesen Sie den Abschnitt zum Erstellen benutzerdefinierter E-Mail-Aktionshandler .

Geben Sie zum Generieren eines E-Mail-Bestätigungslinks die nicht bestätigte E-Mail des vorhandenen Benutzers und ein optionales ActionCodeSettings Objekt an. Der Vorgang wird mit dem E-Mail-Aktionslink aufgelöst. Die verwendete E-Mail muss einem vorhandenen Benutzer gehören.

Node.js

// Admin SDK API to generate the password reset link.
const email = 'user@example.com';
admin
  .auth()
  .generatePasswordResetLink(email, actionCodeSettings)
  .then((link) => {
    // Construct password reset email template, embed the link and send
    // using custom SMTP server.
    return sendCustomPasswordResetEmail(email, displayName, link);
  })
  .catch((error) => {
    // Some error occurred.
  });

// Admin SDK API to generate the email verification link.
const useremail = 'user@example.com';
admin
  .auth()
  .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 Standard-Zielseite für die E-Mail-Überprüfung verwenden und keinen eigenen benutzerdefinierten Handler erstellen, lesen Sie den Abschnitt Erstellen benutzerdefinierter E-Mail-Aktionshandler .

Bevor Sie Benutzer mit der E-Mail-Link-Anmeldung authentifizieren können, müssen Sie die E-Mail-Link-Anmeldung für Ihr Firebase-Projekt aktivieren .

Geben Sie zum Generieren eines ActionCodeSettings die E-Mail- ActionCodeSettings des Benutzers und ein ActionCodeSettings Objekt an. Das ActionCodeSettings Objekt ist in diesem Fall erforderlich, um Informationen darüber bereitzustellen, wohin der Benutzer zurückgegeben werden 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 zur Überprüfung der E-Mail muss die verwendete E-Mail nicht unbedingt einem vorhandenen Benutzer gehören, da mit diesem Vorgang neue Benutzer über einen E-Mail-Link bei Ihrer App angemeldet werden können.

Node.js

// Admin SDK API to generate the sign in with email link.
const usremail = 'user@example.com';
admin
  .auth()
  .generateSignInWithEmailLink(usremail, actionCodeSettings)
  .then((link) => {
    // Construct sign-in with email link template, embed the link and
    // send using custom SMTP server.
    return sendSignInEmail(usremail, 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.

Weitere Informationen zum Authentifizieren von Benutzern mit Firebase mithilfe von E-Mail-Links . Auf diese Weise erhalten Sie Informationen zum Abschluss der Anmeldung, nachdem der Benutzer auf den Link geklickt und zur App zurückgeleitet wurde.