A volte le app mobile devono interagire con gli utenti e chiedere loro di intraprendere determinate azioni inviando email.
Gli SDK client di Firebase consentono di inviare agli utenti email contenenti link che possono utilizzare per reimpostare le password, verificare l'indirizzo email e accedere tramite email. Queste email basate su modelli vengono inviate da Google e hanno una personalizzazione limitata.
Se vuoi utilizzare i tuoi modelli email e il tuo servizio di invio email, in questa pagina viene spiegato come utilizzare l'SDK Firebase Admin per generare in modo programmatico i link di azione per i flussi precedenti, che puoi includere nelle email inviate agli utenti.
Questa opzione offre i seguenti vantaggi:
- Personalizza i modelli email. Sono incluse la possibilità di aggiungere nuovi stili e branding personalizzato, modificare testo e loghi, rivolgersi agli utenti per nome anziché per nome e cognome e così via.
- Applica modelli diversi a seconda del contesto. Ad esempio, se l'utente sta verificando il proprio indirizzo email per iscriversi a una newsletter, il contesto potrebbe dover essere fornito nei contenuti dell'email. Un altro esempio è l'accesso tramite link email: in un scenario, questa operazione può essere attivata dallo stesso utente o come invito da parte di un altro utente. Il contesto deve essere incluso nell'email.
- Localizza i modelli di email personalizzati.
- Possibilità di generare il link da un ambiente server sicuro.
- Possibilità di personalizzare la modalità di apertura del link, tramite un'app mobile o un browser, e di trasmettere ulteriori informazioni sullo stato e così via.
- Possibilità di personalizzare il dominio del link mobile utilizzato per i flussi delle app mobile durante la compilazione del link all'azione email.
Inizializza ActionCodeSettings
Prima di poter generare un link all'azione email, potrebbe essere necessario inizializzare un'istanzaActionCodeSettings
.
ActionCodeSettings
ti consentono di passare uno stato aggiuntivo tramite un URL di continuazione accessibile dopo che l'utente fa clic sul link dell'email. Inoltre, offre all'utente la possibilità di tornare all'app al termine dell'azione. Inoltre, puoi specificare se gestire il link all'azione email direttamente da un'applicazione mobile quando è installata o da un browser.
Per i link che devono essere aperti tramite un'app mobile, dovrai eseguire alcune attività per rilevarli dalla tua app mobile. Consulta le istruzioni su come configurare i link mobile per le azioni email.
Per inizializzare un'istanza ActionCodeSettings
, fornisci i seguenti dati:
Parametro | Tipo | Descrizione |
---|---|---|
url |
stringa | Imposta il link (URL stato/continua) che ha significati diversi in contesti diversi:
|
iOS |
({bundleId: string}|undefined) | Imposta l'ID bundle iOS per aiutare Firebase Authentication a determinare se deve creare un link solo web o mobile che si apre su un dispositivo Apple |
android |
({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) | Imposta il nome del pacchetto Android per aiutare Firebase Authentication a determinare se deve creare un link solo web o mobile che si apre su un dispositivo Android |
handleCodeInApp |
(booleano|undefined) | Indica se il link all'azione email deve essere aperto prima in un'app mobile o in un link web. Il valore predefinito è false. Se impostato su true, il link al codice di azione verrà inviato come link universale o link app per Android e verrà aperto dall'app, se installata. Nel caso in cui il valore sia falso, il codice verrà inviato prima al widget web e poi, al termine, reindirizzerà all'app se installata. |
linkDomain |
(stringa|undefined) | Quando per un progetto sono definiti domini di link di hosting personalizzati,
specifica quello da utilizzare quando il link deve essere aperto da un'app mobile specificata. Altrimenti, viene selezionato automaticamente il dominio predefinito (ad es.
PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
(stringa|undefined) | Deprecato. Non specificare questo parametro. |
L'esempio seguente illustra come inviare un link di verifica email che si aprirà prima in un'app mobile. Il link diretto conterrà il payload dell'URL continuehttps://www.example.com/checkout?cartId=1234
. Il dominio di collegamento Hosting personalizzato utilizzato è custom-domain.com
, che deve essere configurato per l'utilizzo con Firebase Hosting.
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',
)
Vai
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 scoprire di più, consulta Passare lo stato nelle azioni email.
Generare il link dell'email di reimpostazione della password
Per generare un link per la reimpostazione della password, fornisci l'indirizzo email dell'utente esistente e un
oggetto ActionCodeSettings
facoltativo. L'operazione verrà risolta con il link all'azione email. L'indirizzo email utilizzato deve appartenere a un utente esistente.
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)
Vai
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);
Una volta generato, il link può essere inserito nell'email di reimpostazione della password personalizzata e inviato all'utente corrispondente utilizzando un server SMTP personalizzato.
Se non utilizzi la pagina di destinazione predefinita per la reimpostazione della password e stai creando il tuo gestore personalizzato, consulta la sezione sulla creazione di gestori delle azioni email personalizzate.
Generare il link di verifica email
Per generare un link di verifica email, fornisci l'email non verificata dell'utente esistente e un oggetto ActionCodeSettings
facoltativo. L'operazione verrà risolta
con il link all'azione email.
L'indirizzo email utilizzato deve appartenere a un utente esistente.
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)
Vai
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);
Una volta generato, il link può essere inserito nell'email di verifica personalizzata e inviato all'utente corrispondente utilizzando un server SMTP personalizzato.
Se non utilizzi la pagina di destinazione predefinita per la verifica email e stai creando il tuo gestore personalizzato, consulta la sezione sulla creazione di gestori di azioni email personalizzati.
Generare un link email per l'accesso
Prima di poter autenticare gli utenti con l'accesso con link email, devi attivare l'accesso con link email per il tuo progetto Firebase.
Per generare un link di accesso, fornisci l'indirizzo email dell'utente e un oggetto ActionCodeSettings
. In questo caso, l'oggetto ActionCodeSettings
è obbligatorio per fornire informazioni su dove reindirizzare l'utente dopo aver fatto clic sul link per completare l'accesso. L'operazione verrà risolta con il link all'azione email.
A differenza della reimpostazione della password e della verifica email, l'indirizzo email utilizzato non deve necessariamente appartenere a un utente esistente, poiché questa operazione può essere utilizzata per registrare nuovi utenti nella tua app tramite link email.
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)
Vai
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);
Una volta generato, il link può essere inserito nell'email di accesso personalizzata e inviato all'utente corrispondente utilizzando un server SMTP personalizzato.
Scopri di più sull'autenticazione degli utenti con Firebase tramite i link email. In questo modo, potrai fornire informazioni su come completare l'accesso dopo che l'utente fa clic sul link e viene reindirizzato all'app.