Stato di passaggio nelle azioni e-mail

Puoi trasmettere lo stato tramite un URL di continuazione durante l'invio di azioni email per la password reimposta o verifica l'email di un utente. Ciò offre all'utente la possibilità di torna all'app al termine dell'azione. Inoltre, puoi specificare se gestire il link di azione dell'email direttamente da un'applicazione mobile quando viene installato al posto di una pagina web.

Ciò può essere estremamente utile nei seguenti scenari comuni:

  • Un utente che non ha eseguito l'accesso potrebbe provare ad accedere a contenuti che richiedono l'accesso. Tuttavia, l'utente potrebbe aver dimenticato la password e quindi attivare il flusso di reimpostazione della password. Alla fine flusso, l'utente si aspetta di tornare alla sezione dell'app in cui provare ad accedere.

  • Un'applicazione può offrire l'accesso solo ad account verificati. Per Ad esempio, una newsletter può richiedere all'utente di verificare il proprio indirizzo email prima iscrivendoti. L'utente seguiva la procedura di verifica dell'email e si aspettava tornare all'app e completare l'abbonamento.

  • In altri casi, l'utente potrebbe aver avviato il flusso dal proprio dispositivo mobile e si aspetta che, dopo la verifica, torni all'app mobile anziché il browser.

La possibilità di trasmettere lo stato tramite un URL continuo è una funzionalità potente che Firebase Auth fornisce funzionalità che possono migliorare significativamente l'esperienza utente.

URL di trasmissione/continuazione dello stato nelle azioni email

Per trasmettere in sicurezza un URL di continuazione, il dominio dell'URL dovrà essere inserito nella whitelist nella console Firebase. Questa operazione viene eseguita nella sezione Autenticazione aggiungendo il dominio alla sezione di Domini autorizzati nella scheda Metodo di accesso, se non è già presente.

Un elemento ActionCodeSettings quando invii un'email di reimpostazione della password o l'email di verifica. Può essere creato con il valore ActionCodeSettings.Builder associato che contiene i seguenti metodi:

Metodo Descrizione
setUrl(String url)

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

  • Quando il link viene gestito nei widget delle azioni web, si tratta della nel parametro di query continueUrl.
  • Quando il link viene gestito direttamente nell'app, si tratta della continueUrl parametro di query nel link diretto della Link dinamico.
setIOSBundleId(String iOSBundleId) Imposta l'ID pacchetto iOS. Questo proverà ad aprire il link in un'app per iOS se dal momento dell'installazione. L'app per iOS deve essere registrata nella console.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Imposta il nome del pacchetto Android. Questo proverà ad aprire il link in un app per Android, se installata. Se il valore di installIfNotAvailable è impostato su true, viene specificato se installare l'app per Android se il dispositivo la supporta e l'app non è già installata. Se è specificato minVersion, Se è installata una versione precedente dell'app, l'utente viene indirizzato Play Store per eseguire l'upgrade dell'app. L'app per Android deve essere registrata in la console.
setHandleCodeInApp(boolean status) Se il link di azione dell'email verrà aperto in un'app mobile o sul web prima il link. Il valore predefinito è false. Se impostato su true, il link del codice di azione verrà inviato come link universale o link per app Android e verrà aperto dall'app, se installata. In caso falso, il codice verrà inviato prima il widget web e poi su Continua reindirizza all'app se installato.
setDynamicLinkDomain(String dynamicLinkDomain) Imposta il dominio (o sottodominio) del link dinamico da utilizzare per il link corrente se deve essere aperto usando Firebase Dynamic Links. Come più dinamiche i domini dei link possono essere configurati per progetto. Questo campo fornisce la possibilità di sceglierne esplicitamente uno. Se non viene specificato alcun dominio, il primo dominio per impostazione predefinita.

L'esempio seguente illustra come inviare un link di verifica email che si apre in un'app mobile come link dinamico Firebase (App per iOS com.example.ios o app per Android com.example.android). La Il link diretto conterrà il payload per l'URL continuo https://www.example.com/?email=user@example.com.

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.")
        }
    }

Java

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

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

  1. Abilita 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.

      Se hai già creato un dominio Dynamic Links, prendine nota. Dynamic Links dominio è generalmente simile all'esempio seguente:

      example.page.link

      Questo valore ti servirà quando configuri l'app Apple o Android per per intercettare il link in entrata.

  2. Configurazione delle applicazioni Android:

    1. Se prevedi di gestire questi link dalla tua applicazione Android, i Il nome del pacchetto Android deve essere specificato nella console Firebase impostazioni progetto. 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 del file AndroidManifest.xml.
    3. Per saperne di più, consulta Ricezione delle istruzioni di Android Dynamic Links.
  3. Configurazione delle applicazioni iOS:

    1. Se prevedi di gestire questi link dalla tua applicazione iOS, L'ID pacchetto iOS deve essere specificato nella console Firebase impostazioni progetto. Inoltre, l'ID App Store e l'ID Apple Developer È necessario specificare anche l'ID team.
    2. Dovrai inoltre configurare il dominio del link universale FDL come Dominio associato nelle funzionalità dell'applicazione.
    3. Se prevedi di distribuire la tua applicazione a iOS 8 e versioni precedenti, dovrai impostare l'ID pacchetto iOS come schema personalizzato per le URL.
    4. Per saperne di più, consulta Ricezione delle istruzioni relative ai link dinamici per iOS.

Gestione delle azioni email in un'applicazione web

Puoi specificare se vuoi gestire il link del codice di azione da un sito web prima l'applicazione e poi reindirizzare a un'altra pagina web o applicazione mobile dopo il completamento, a condizione che l'applicazione mobile sia disponibile. Per farlo, chiama setHandleCodeInApp(false) nel ActionCodeSettings.Builder . Sebbene non siano obbligatori, l'ID pacchetto iOS o il nome del pacchetto Android consentiranno all'utente di reindirizzarsi all'app specificata al termine del codice di azione email.

L'URL web utilizzato qui è quello configurato nei modelli di azioni email . Per tutti i progetti viene eseguito il provisioning di uno predefinito. Consulta personalizzazione dei gestori delle email per scoprire di più come personalizzare il gestore di azioni 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 alcuna dipendenza aggiuntiva, ti consigliamo di utilizzare la libreria client FDL per analizzare il link diretto per te.

Quando si gestiscono azioni email come la verifica email, il codice di azione dal oobCode parametro di query deve essere analizzato dal link diretto e poi applicato tramite applyActionCode per rendere effettiva la modifica, ovvero l'indirizzo email da verificare.

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 app per Android, puoi anche specificare, tramite il valore booleano installIfNotAvailable, che l'app deve essere installato se il dispositivo la supporta e non è già installato. Se il link viene fatto clic da un dispositivo che non supporta la funzionalità viene aperta da una pagina web. Per farlo, chiama setHandleCodeInApp(true) nel ActionCodeSettings.Builder . Dovrai anche specificare il nome del pacchetto Android o l'ID bundle iOS dell'applicazione mobile.

L'URL web di riserva utilizzato qui, quando non sono disponibili app mobile, è quello configurati nella sezione dei modelli di azioni email. È stato eseguito il provisioning di uno predefinito per tutti i progetti. Consulta personalizzazione dei gestori delle email per scoprire di più come personalizzare il gestore di azioni email.

In questo caso, il link dell'app mobile inviato all'utente sarà un link FDL la cui payload è l'URL del codice di azione, configurato nella console, con la query parametri oobCode, mode, apiKey e continueUrl. Quest'ultimo sarà il URL originale specificato nell'oggetto ActionCodeSettings. Sebbene sia possibile intercettare e gestire il link in arrivo dalla tua app senza ulteriori consigliamo di utilizzare la libreria client FDL per analizzare il link diretto te. Il codice di azione può essere applicato direttamente da un'app mobile simile al modo in cui viene gestito dal flusso web descritto in personalizzazione dei gestori delle email.

Quando si gestiscono azioni email come la verifica email, il codice di azione dal oobCode parametro di query deve essere analizzato dal link diretto e poi applicato tramite applyActionCode per rendere effettiva la modifica, ovvero l'indirizzo email da verificare.