Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Stato di passaggio nelle azioni e-mail

È possibile passare lo stato tramite un URL di continuazione quando si inviano azioni di posta elettronica per la reimpostazione della password o la verifica della posta di un utente. Ciò fornisce 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 invece di una pagina web.

Questo può essere estremamente utile nei seguenti scenari comuni:

  • Un utente, attualmente non connesso, potrebbe tentare di accedere a contenuti che richiedono l'accesso dell'utente. Tuttavia, l'utente potrebbe aver dimenticato la password e quindi attivare il flusso di reimpostazione della password. Alla fine 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 ad account verificati. Ad esempio, una newsletter potrebbe richiedere all'utente di verificare la propria email prima di iscriversi. L'utente eseguirà il flusso di verifica dell'email e si aspetterebbe di tornare all'app per completare l'abbonamento.

  • In altri casi, l'utente potrebbe aver avviato il flusso dal proprio dispositivo mobile e aspettarsi, dopo la verifica, di tornare alla propria app mobile anziché al browser.

La possibilità di passare lo stato tramite un URL continuo è una potente funzionalità fornita da Firebase Auth e che può migliorare in modo significativo l'esperienza dell'utente.

Passaggio di stato / continua URL nelle azioni di posta elettronica

Per passare in modo sicuro un URL di continuazione, il dominio per l'URL dovrà essere inserito nella whitelist nella console Firebase . Questa operazione viene eseguita nella sezione Autenticazione aggiungendo questo dominio all'elenco dei domini autorizzati nella scheda Metodo di accesso, se non è già presente.

È necessario fornire un'istanza di ActionCodeSettings quando si invia un'e-mail di reimpostazione della password o un'e-mail di verifica. Può essere creato con la classe ActionCodeSettings.Builder associata che contiene i seguenti metodi:

Metodo Descrizione
setUrl(String url)

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

  • Quando il collegamento viene gestito nei widget di azione Web, questo è il collegamento diretto nel parametro di query continueUrl .
  • Quando il collegamento viene gestito direttamente nell'app, si tratta del parametro di query continueUrl nel collegamento diretto del collegamento dinamico.
setIOSBundleId(String iOSBundleId) Imposta l'ID bundle iOS. Questo proverà ad aprire il collegamento in un'app iOS se è installata. L'app iOS deve essere registrata nella console.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Imposta il nome del pacchetto Android. Questo proverà ad aprire il collegamento in un'app Android se è installata. Se installIfNotAvailable è impostato su true , specifica se installare l'app Android se il dispositivo la supporta e l'app non è già installata. Se si specifica minimumVersion ed è installata una versione precedente dell'app, l'utente viene indirizzato al Play Store per aggiornare l'app. L'app per Android deve essere registrata nella console.
setHandleCodeInApp(boolean status) Indica se il collegamento dell'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 di azione verrà inviato come collegamento universale o collegamento all'app Android e verrà aperto dall'app se installata. Nel caso falso, il codice verrà inviato prima al widget web e poi su prosegui reindirizzerà all'app se installata.
setDynamicLinkDomain(String dynamicLinkDomain) 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 esplicitamente. Se non ne viene fornito nessuno, per impostazione predefinita viene utilizzato il primo dominio.

L'esempio seguente illustra come inviare un collegamento di verifica tramite posta elettronica che verrà aperto in un'app mobile prima come Firebase Dynamic Link (app iOS com.example.ios o app Android com.example.android ). Il link diretto conterrà il payload dell'URL di continuazione https://www.example.com/?email=user@example.com .

Giava

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();

String url = "http://www.example.com/verify?uid=" + user.getUid();
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build();

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

Kotlin + KTX

val auth = Firebase.auth
val user = auth.currentUser!!

val url = "http://www.example.com/verify?uid=" + user.uid
val actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build()

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "Email sent.")
            }
        }

Firebase Auth utilizza Firebase Dynamic Links quando invia un collegamento che deve essere aperto in un'applicazione mobile. Per poter utilizzare questa funzione, Dynamic Links deve essere configurato nella Firebase Console.

  1. Abilita Firebase Dynamic Links:

    1. Nella console Firebase , apri la sezione Collegamenti dinamici .
    2. Se non hai ancora accettato i termini di Dynamic Links e hai creato un dominio Dynamic Links, fallo ora.

      Se hai già creato un dominio Dynamic Links, prendine nota. Un dominio Dynamic Links ha in genere l'aspetto seguente:

      example.page.link

      Avrai bisogno di questo valore quando configuri la tua app iOS o Android per intercettare il collegamento in entrata.

  2. Configurazione delle applicazioni Android:

    1. Se prevedi di gestire questi collegamenti dalla tua applicazione Android, il nome del pacchetto Android deve essere specificato nelle impostazioni del progetto della console Firebase. Inoltre, è necessario fornire SHA-1 e SHA-256 del certificato dell'applicazione.
    2. Sarà inoltre necessario configurare il filtro di intenti per il collegamento diretto nel file AndroidManifest.xml.
    3. Per ulteriori informazioni, fare riferimento alle istruzioni Ricezione di collegamenti dinamici Android .
  3. Configurazione delle applicazioni iOS:

    1. Se prevedi di gestire questi collegamenti dalla tua applicazione iOS, l'ID del bundle iOS deve essere specificato nelle impostazioni del progetto Firebase Console. Inoltre, è necessario specificare anche l'ID dell'App Store e l'ID del team degli sviluppatori Apple.
    2. Sarà inoltre necessario configurare il dominio di collegamento universale FDL come dominio associato nelle funzionalità dell'applicazione.
    3. Se prevedi di distribuire la tua applicazione alle versioni iOS 8 e precedenti, dovrai impostare il tuo ID bundle iOS come schema personalizzato per gli URL in entrata.
    4. Per ulteriori informazioni, fare riferimento alle istruzioni Ricezione di collegamenti dinamici iOS .

Gestione delle azioni di posta elettronica in un'applicazione Web

È possibile specificare se si desidera gestire prima il collegamento del codice di azione da un'applicazione Web e quindi reindirizzarlo a un'altra pagina Web o applicazione mobile dopo il completamento corretto, a condizione che l'applicazione mobile sia disponibile. Questa operazione viene eseguita chiamando setHandleCodeInApp(false) nell'oggetto ActionCodeSettings.Builder . Sebbene non sia richiesto un ID bundle iOS o il nome del pacchetto Android, fornirli consentirà all'utente di reindirizzare nuovamente all'app specificata al completamento del codice di azione e-mail.

L'URL web utilizzato qui è quello configurato nella sezione dei modelli di azioni email. Viene fornito uno predefinito per tutti i progetti. Fare riferimento alla personalizzazione dei gestori di posta elettronica per ulteriori informazioni su come personalizzare il gestore di azioni di posta elettronica.

In questo caso, il collegamento all'interno del parametro di query continueUrl sarà un collegamento FDL il cui payload è l' URL specificato nell'oggetto ActionCodeSettings . Sebbene tu possa intercettare e gestire il link in entrata dalla tua app senza alcuna dipendenza aggiuntiva, ti consigliamo di utilizzare la libreria client FDL per analizzare il deep link per te.

Quando si gestiscono azioni e-mail come la verifica e-mail, il codice dell'azione dal parametro di query oobCode deve essere analizzato dal deep link e quindi applicato tramite applyActionCode affinché la modifica abbia effetto, ovvero l'e-mail da verificare.

Gestione delle azioni di posta elettronica in un'applicazione mobile

È possibile specificare se si desidera gestire prima il collegamento del codice di azione all'interno dell'applicazione mobile, a condizione che sia installato. Con le applicazioni Android, hai anche la possibilità di specificare tramite il booleano installIfNotAvailable che l'app deve essere installata se il dispositivo la supporta e non è già installata. Se il collegamento viene cliccato da un dispositivo che non supporta l'applicazione mobile, viene invece aperto da una pagina web. Questa operazione viene eseguita chiamando setHandleCodeInApp(true) nell'oggetto ActionCodeSettings.Builder . Sarà inoltre necessario specificare il nome del pacchetto Android o l'ID del pacchetto iOS dell'applicazione mobile.

L'URL Web di fallback utilizzato qui, quando non è disponibile alcuna app mobile, è quello configurato nella sezione dei modelli di azioni e-mail. Viene fornito uno predefinito per tutti i progetti. Fare riferimento alla personalizzazione dei gestori di posta elettronica per ulteriori informazioni su come personalizzare il gestore di azioni di posta elettronica.

In questo caso, il collegamento all'app mobile inviato all'utente sarà un collegamento 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à l' URL originale specificato nell'oggetto ActionCodeSettings . Sebbene tu possa intercettare e gestire il link in entrata dalla tua app senza alcuna dipendenza aggiuntiva, ti consigliamo di utilizzare la libreria client FDL per analizzare il deep link per te. Il codice azione può essere applicato direttamente da un'applicazione mobile in modo simile a come viene gestito dal flusso web descritto nella sezione relativa alla personalizzazione dei gestori di posta elettronica .

Quando si gestiscono azioni e-mail come la verifica e-mail, il codice dell'azione dal parametro di query oobCode deve essere analizzato dal deep link e quindi applicato tramite applyActionCode affinché la modifica abbia effetto, ovvero l'e-mail da verificare.