Stato di passaggio nelle azioni e-mail

Puoi passare lo stato tramite un URL di continuazione quando invii azioni email per il ripristino della password o la verifica dell'email di un utente. In questo modo, l'utente può essere reindirizzato all'app al termine dell'azione. Inoltre, puoi specificare se gestire il link all'azione email direttamente da un'applicazione mobile quando è installata anziché da una pagina web.

Questo può essere estremamente utile nei seguenti scenari comuni:

  • Un utente che al momento non ha eseguito l'accesso potrebbe tentare di accedere a contenuti che richiedono l'accesso. Tuttavia, l'utente potrebbe aver dimenticato la password e quindi attivare il flusso di reimpostazione della password. Al termine del flusso, l'utente si aspetta di tornare alla sezione dell'app a cui stava tentando di accedere.

  • Un'applicazione può offrire l'accesso solo agli account verificati. Ad esempio, un'app di newsletter potrebbe richiedere all'utente di verificare il proprio indirizzo email prima di iscriversi. L'utente deve completare il flusso di verifica email e si aspetta di essere reindirizzato all'app per completare l'abbonamento.

  • In genere, quando un utente avvia una procedura di reimpostazione della password o di verifica email su un'app Apple, si aspetta di completarla all'interno dell'app. La possibilità di passare lo stato tramite l'URL di continuazione rende tutto ciò possibile.

La possibilità di passare lo stato tramite un URL di continuazione è una funzionalità potente fornita da Firebase Auth che può migliorare notevolmente l'esperienza utente.

Trasmissione dell'URL di stato/continuazione nelle azioni email

Per passare in modo sicuro un URL di continuazione, il dominio dell'URL dovrà essere inserito nella lista consentita nella console Firebase. Per farlo, vai alla sezione Autenticazione e aggiungi il dominio all'elenco di domini autorizzati nella scheda Metodo di accesso, se non è già presente.

È necessario fornire un'istanza ActionCodeSettings quando si invia un'email di reimpostazione della password o un'email di verifica. Questa interfaccia accetta i seguenti parametri:

Parametro Tipo Descrizione
url Stringa

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

  • Quando il link viene gestito nei widget di azioni web, si tratta del link diretto nel parametro di query continueUrl.
  • Quando il link viene gestito direttamente nell'app, si tratta del continueUrl parametro di query nel link diretto del link dinamico.
iOSBundleId Stringa Imposta l'ID pacchetto. Verrà tentato di aprire il link in un'app Apple, se è installata. L'app deve essere registrata nella console. Se non viene fornito alcun ID pacchetto, il valore di questo campo viene impostato sull'ID pacchetto del pacchetto principale dell'app.
androidPackageName Stringa Imposta il nome del pacchetto Android. Verrà tentato di aprire il link in un'app Android se è installata.
androidInstallApp bool Specifica se installare l'app per Android se il dispositivo la supporta e l'app non è già installata. Se questo campo viene fornito senza un packageName, viene generato un errore che spiega che il packageName deve essere fornito insieme a questo campo.
androidMinimumVersion Stringa La versione minima dell'app supportata in questo flusso. Se viene specificata la proprietà minimumVersion ed è installata una versione precedente dell'app, l'utente viene indirizzato al Play Store per eseguire l'upgrade dell'app. L'app per Android deve essere registrata in Console.
handleCodeInApp bool 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 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.
dynamicLinkDomain Stringa (Deprecato, utilizza "linkDomain") Imposta il dominio (o sottodominio) del link dinamico da utilizzare per il link corrente se deve essere aperto utilizzando Firebase Dynamic Links. Poiché è possibile configurare più domini di link dinamici per progetto, questo campo consente di sceglierne uno esplicitamente. Se non viene specificato alcun dominio, per impostazione predefinita viene utilizzato il primo. linkDomain Stringa Il dominio Firebase Hosting personalizzato facoltativo da utilizzare quando il link deve essere aperto tramite un'app mobile specificata. Il dominio deve essere configurato in Firebase Hosting e di proprietà del progetto. Non può essere un dominio di hosting predefinito ("web.app" o "firebaseapp.com"). Sostituisce l'impostazione "dynamicLinkDomain" deprecata.

Il seguente esempio illustra come inviare un link di verifica email che si aprirà inizialmente in un'app mobile come link dinamico Firebase utilizzando il dominio del link dinamico personalizzato example.page.link (app per iOS com.example.ios o app per Android com.example.android in cui verrà installata l'app se non è già installata e la versione minima è 12). Il link diretto conterrà il payload dell'URL di continuazione https://www.example.com/?email=user@example.com.

final user = FirebaseAuth.instance.currentUser;

final actionCodeSettings = ActionCodeSettings(
  url: "http://www.example.com/verify?email=${user?.email}",
  iOSBundleId: "com.example.ios",
  androidPackageName: "com.example.android",
);

await user?.sendEmailVerification(actionCodeSettings);

Firebase Auth utilizza Firebase Dynamic Links quando invia un link che deve essere aperto in un'applicazione mobile. Per utilizzare questa funzionalità, i link dinamici devono essere configurati nella console di Firebase.

  1. Attiva Firebase Dynamic Links:

    1. Nella console Firebase, apri la sezione Dynamic Links.

    2. Se non hai ancora accettato i termini di Dynamic Links e creato un dominio Dynamic Links, fallo ora.

    3. Se hai già creato un dominio di Dynamic Links, prendine nota. Un dominio di Link dinamici è simile al seguente esempio:

      example.page.link

    4. Questo valore ti servirà quando configuri l'app per Apple o Android in modo da intercettare il link in arrivo.

  2. Configurazione delle applicazioni Android:

    1. Se prevedi di gestire questi link dalla tua applicazione per Android, il nome del pacchetto Android deve essere specificato nelle impostazioni del progetto della Console Firebase. Inoltre, devono essere forniti gli hash SHA-1 e SHA-256 del certificato dell'applicazione.
    2. Dovrai anche configurare il filtro per intent per il link diretto nel file AndroidManifest.xml.
    3. Per saperne di più, consulta Istruzioni per la ricezione dei link dinamici Android.
  3. Configurazione delle applicazioni Apple:

    1. Se prevedi di gestire questi link dalla tua applicazione, l'ID del bundle deve essere specificato nelle impostazioni del progetto della Console Firebase. Inoltre, è necessario specificare anche l'ID App Store e l'ID team sviluppatore Apple.
    2. Dovrai anche configurare il dominio del link universale FDL come Domini associati nelle funzionalità dell'applicazione.
    3. Se prevedi di distribuire la tua applicazione per le versioni di iOS 8 e precedenti, dovrai impostare l'ID pacchetto come schema personalizzato per gli URL in entrata.
    4. Per saperne di più, consulta Istruzioni per la ricezione dei link dinamici per le piattaforme Apple.

Gestione delle azioni email in un'applicazione web

Puoi specificare se vuoi gestire prima il link al codice di azione da un'applicazione web e poi reindirizzare a un'altra pagina web o applicazione mobile al termine dell'operazione, a condizione che l'applicazione mobile sia disponibile. A tale scopo, imposta handleCodeInApp su false nell'oggetto ActionCodeSettings. Anche se un ID bundle o il nome del pacchetto Android non sono obbligatori, fornirli consentirà all'utente di eseguire nuovamente il reindirizzamento all'app specificata al termine del codice di azione email.

L'URL web utilizzato qui è quello configurato nella sezione dei modelli di azioni email. Per tutti i progetti viene eseguito il provisioning di un valore predefinito. Per saperne di più su come personalizzare il gestore delle azioni email, consulta la sezione relativa alla personalizzazione dei gestori email.

In questo caso, il link all'interno del parametro di query continueURL sarà un link FDL il cui payload è il URL specificato nell'oggetto ActionCodeSettings. Sebbene tu possa intercettare e gestire il link in arrivo dalla tua app senza dipendenze aggiuntive, ti consigliamo di utilizzare la libreria client FDL per analizzare il link diretto per te.

Quando gestisci azioni email come la verifica email, il codice di azione del parametro di query oobCode deve essere analizzato dal link diretto e poi applicato tramite applyActionCode affinché la modifica venga applicata, ovvero l'email venga verificata.

Gestione delle azioni email in un'applicazione mobile

Puoi specificare se vuoi gestire prima il collegamento del codice di azione all'interno della tua app mobile, a condizione che sia installata. Con le applicazioni per Android, puoi anche specificare tramite androidInstallApp che l'app deve essere installata se il dispositivo la supporta e non è già installata. Se il link viene fatto clic da un dispositivo che non supporta l'applicazione mobile, viene aperto da una pagina web. A tale scopo, imposta handleCodeInApp su true nell'oggetto ActionCodeSettings. Dovrà essere specificato anche il nome del pacchetto o l'ID bundle Android dell'applicazione mobile.L'URL web di riserva utilizzato qui, quando non è disponibile alcuna app mobile, è quello configurato nella sezione dei modelli di azioni email. Per impostazione predefinita, viene eseguito il provisioning di un valore per tutti i progetti. Per saperne di più su come personalizzare il gestore delle azioni email, consulta la sezione relativa alla personalizzazione dei gestori email.

In questo caso, il link all'app mobile inviato all'utente sarà un link FDL il cui payload è l'URL del codice di azione, configurato nella Console, con i parametri di query oobCode, mode, apiKey e continueUrl. Quest'ultimo sarà il URL originale specificato nell'objetto ActionCodeSettings. Sebbene tu possa intercettare e gestire il link in entrata dalla tua app senza dipendenze aggiuntive, ti consigliamo di utilizzare la libreria client FDL per analizzare il link diretto per te. Il codice di azione può essere applicato direttamente da un'applicazione mobile in modo simile a come viene gestito dal flusso web descritto nella sezione sulla personalizzazione dei gestori email.

Quando gestisci azioni email come la verifica email, il codice di azione del parametro di query oobCode deve essere analizzato dal link diretto e poi applicato tramite applyActionCode affinché la modifica venga applicata, ovvero l'email venga verificata.