Catch up on everything we announced at this year's Firebase Summit. Learn more

Generazione di link azioni email Email

Le app mobili a volte devono interagire con gli utenti e invitarli a intraprendere determinate azioni inviando e-mail.

I Firebase Admin SDK offrono la possibilità di inviare messaggi di posta elettronica contenenti link utenti che possono utilizzare per reimpostazione delle password, e-mail di verifica degli indirizzi, e-mail-based di accesso. Queste email vengono inviate da Google e hanno una personalizzazione limitata.

Se desideri invece utilizzare i tuoi modelli di posta elettronica e il tuo servizio di consegna della posta elettronica, puoi utilizzare l'SDK di amministrazione di Firebase per generare in modo programmatico i link di azione per i flussi di cui sopra, che puoi includere nelle email ai tuoi utenti.

Questo comporta i seguenti vantaggi:

  • Personalizza i modelli di posta elettronica. Ciò include la possibilità di aggiungere nuovi stili e marchi personalizzati, modificare parole e loghi, rivolgersi agli utenti per nome anziché per nome completo e così via.
  • Applicare modelli diversi a seconda del contesto. Ad esempio, se l'utente sta verificando la propria e-mail per iscriversi a una newsletter, potrebbe essere necessario fornire il contesto nel contenuto dell'e-mail. Un altro esempio è l'accesso tramite collegamento e-mail: in uno scenario questo può essere attivato dallo stesso utente o come invito da un altro utente. Il contesto dovrebbe essere incluso nell'e-mail.
  • Localizza modelli di email personalizzati.
  • Possibilità di generare il collegamento da un ambiente server sicuro.
  • Possibilità di personalizzare la modalità di apertura del collegamento, tramite un'app mobile o un browser, e come trasmettere ulteriori informazioni sullo stato, ecc.
  • Possibilità di personalizzare il dominio di collegamento dinamico utilizzato per i flussi di app per dispositivi mobili durante la creazione del collegamento di azione e-mail e persino di specificare un dominio di collegamento dinamico diverso a seconda del contesto o dell'app per dispositivi mobili.

Inizializza ActionCodeSettings

Prima di poter generare un link di azione e-mail, potrebbe essere necessario per inizializzare un ActionCodeSettings esempio.

ActionCodeSettings permettono di passare stato aggiuntivo attraverso una continua URL che è accessibile dopo che l'utente fa clic sul collegamento e-mail. Ciò fornisce anche all'utente la possibilità di tornare all'app dopo che l'azione è stata completata. Inoltre, è possibile specificare se gestire il collegamento all'azione e-mail direttamente da un'applicazione mobile quando è installata o da un browser.

Per i link che devono essere aperti tramite un'app mobile, dovrai abilitare Firebase Dynamic Links ed eseguire alcune attività per rilevare questi link dalla tua app mobile. Fare riferimento alle istruzioni su come configurare Firebase dinamico collegamenti per le azioni di e-mail.

Per inizializzare un ActionCodeSettings esempio, fornire i seguenti dati:

Parametro Tipo Descrizione
url corda

Imposta il collegamento (stato/continua URL) che ha significati diversi in contesti diversi:

  • Quando il collegamento viene gestito nei widget dell'azione web, questo è il link in profondità nel continueUrl parametro di query.
  • Quando il collegamento viene gestito in app direttamente, questo è il continueUrl parametro di query nel profondo legame del collegamento dinamico.
iOS ({bundleId: stringa}|non definito) Imposta l'ID del pacchetto. Questo proverà ad aprire il collegamento in un'app Apple se è installata. L'app deve essere registrata nella Console.
android ({packageName: string, installApp:boolean|undefined, MinimumVersion: string|undefined}|undefined) Imposta il nome del pacchetto Android. Questo proverà ad aprire il collegamento in un'app Android se è installata. Se installApp è passata, specifica se installare l'applicazione Android se il dispositivo lo supporta e l'applicazione non è già installato. Se questo campo viene fornito senza un packageName , viene generato un errore spiegando che il packageName deve essere fornita in combinazione con questo campo. Se minimumVersion viene specificato, ed è installata una versione precedente dell'app, l'utente è portato al Play Store per aggiornare l'applicazione. L'app Android deve essere registrata nella Console.
handleCodeInApp (booleano|non definito) Se il collegamento all'azione e-mail verrà aperto prima in un'app mobile o in un collegamento Web. L'impostazione predefinita è false. Se impostato su true, il collegamento al codice azione verrà inviato come collegamento universale o collegamento app Android e verrà aperto dall'app, se installata. Nel caso falso, il codice verrà inviato prima al widget web e poi su continue verrà reindirizzato all'app se installata.
dynamicLinkDomain (stringa|non definito) Imposta il dominio (o sottodominio) del collegamento dinamico da utilizzare per il collegamento corrente se deve essere aperto utilizzando Firebase Dynamic Links. Poiché è possibile configurare più domini di collegamento dinamico per progetto, questo campo offre la possibilità di sceglierne uno in modo esplicito. Se non ne viene fornito nessuno, per impostazione predefinita viene utilizzato il dominio più vecchio.

Il seguente esempio illustra come inviare un link di verifica e-mail che si apre in un app mobile prima come Firebase Dynamic Link (app di Apple com.example.ios o Android com.example.android cui l'applicazione installerà se non è già installato e la versione minima è 12). Il profondo legame conterrà l'URL continuano payload https://www.example.com/checkout?cartId=1234 . Il dominio di collegamento dinamico utilizzato è coolapp.page.link , che deve essere configurato per l'utilizzo con Firebase dinamica Links.

Nodo.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',
};

Giava

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();

Pitone

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',
)

andare

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",
};

Per ulteriori informazioni, vedere Passaggio di Stato in Email azioni .

Per generare un link di reimpostazione della password, fornire e-mail dell'utente esistente e un optional ActionCodeSettings oggetto. L'operazione si risolverà con il collegamento all'azione e-mail. L'e-mail utilizzata deve appartenere a un utente esistente.

Nodo.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.
  });

Giava

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());
}

Pitone

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)

andare

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);

Dopo che il collegamento è stato generato, può essere inserito nell'e-mail di reimpostazione della password personalizzata e quindi inviato tramite e-mail all'utente corrispondente utilizzando un server SMTP personalizzato.

Se non si utilizza la pagina di destinazione di reimpostazione password di default e costruire il proprio gestore personalizzato, vedere la creazione di gestori di azione di posta elettronica personalizzato .

Per generare un link di verifica e-mail, fornire email non verificato dell'utente esistente e un optional ActionCodeSettings oggetto. L'operazione si risolverà con il collegamento all'azione e-mail. L'e-mail utilizzata deve appartenere a un utente esistente.

Nodo.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.
  });

Giava

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());
}

Pitone

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)

andare

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);

Dopo che il collegamento è stato generato, può essere inserito nell'e-mail di verifica personalizzata e quindi inviato tramite e-mail all'utente corrispondente utilizzando un server SMTP personalizzato.

Se non si utilizza la pagina di default di atterraggio di verifica e-mail e costruire il proprio gestore personalizzato, vedere la creazione di gestori di azione di posta elettronica personalizzato .

Prima di poter autenticare gli utenti con collegamento all'e-mail di accesso, è necessario abilitare collegamento e-mail di accesso per il vostro progetto Firebase.

Per generare un segno-in collegamento, fornire e-mail dell'utente e un ActionCodeSettings oggetto. ActionCodeSettings oggetto è necessario in questo caso per fornire informazioni su dove tornare l'utente dopo che il collegamento è scattato per il segno-in completamento. L'operazione si risolverà con il collegamento all'azione e-mail.

A differenza della reimpostazione della password e della verifica dell'e-mail, l'e-mail utilizzata non deve necessariamente appartenere a un utente esistente, poiché questa operazione può essere utilizzata per registrare nuovi utenti nella tua app tramite collegamento e-mail.

Nodo.js

// Admin SDK API to generate the sign in with email link.
const usremail = 'user@example.com';
getAuth()
  .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.
  });

Giava

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());
}

Pitone

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)

andare

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);

Dopo che il collegamento è stato generato, può essere inserito nell'e-mail di accesso personalizzata e quindi inviato tramite e-mail all'utente corrispondente utilizzando un server SMTP personalizzato.

Scopri di più su l'autenticazione degli utenti con Firebase usando i link e-mail . Ciò consentirà di fornire informazioni su come completare l'accesso dopo che l'utente ha fatto clic sul collegamento ed è stato reindirizzato all'app.