Stato di passaggio nelle azioni e-mail

Puoi trasmettere lo stato tramite un URL di continuazione quando invii azioni email per la reimpostazione della password o verifichi l'email di un utente. Ciò fornisce all'utente la possibilità di tornare all'app una volta completata l'azione. Inoltre, è possibile specificare se gestire il collegamento all'azione e-mail direttamente da un'applicazione mobile quando è installata anziché da una pagina Web.

Ciò 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, un'app di newsletter potrebbe richiedere all'utente di verificare la propria e-mail prima di iscriversi. L'utente seguirà il flusso di verifica dell'e-mail e si aspetterà di essere reindirizzato all'app per completare l'abbonamento.

  • In generale, quando un utente inizia un flusso di reimpostazione della password o di verifica dell'e-mail su un'app Apple, si aspetta di completare il flusso all'interno dell'app; la possibilità di passare lo stato tramite l'URL di continuazione lo rende possibile.

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

Passaggio dell'URL di stato/continua nelle azioni e-mail

Per trasmettere in modo sicuro un URL di continuazione, il dominio dell'URL dovrà essere inserito nella lista bianca nella console Firebase . Questo viene fatto nella sezione Autenticazione aggiungendo questo dominio all'elenco dei domini autorizzati nella scheda Metodo di accesso se non è già presente.

È necessario fornire un'istanza FIRActionCodeSettings quando si invia un'e-mail di reimpostazione della password o un'e-mail di verifica. Questa interfaccia accetta i seguenti parametri:

Veloce

Parametro Tipo Descrizione
URL Corda

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

  • Quando il collegamento viene gestito nei widget delle azioni Web, questo è il collegamento diretto nel parametro di query continueUrl .
  • Quando il collegamento viene gestito direttamente nell'app, questo è il parametro di query continueUrl nel collegamento diretto del collegamento dinamico.
iOSBundleID Corda Imposta l'ID del pacchetto. Questo tenterà di aprire il collegamento 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 Corda Imposta il nome del pacchetto Android. Questo tenterà di aprire il collegamento in un'app Android, se installata.
androidInstallIfNotAvailable Bool Specifica se installare l'app Android se il dispositivo la supporta e l'app non è già installata. Se questo campo viene fornito senza packageName, viene generato un errore che spiega che packageName deve essere fornito insieme a questo campo.
androidMinimumVersion Corda La versione minima dell'app supportata in questo flusso. Se viene specificato MinimumVersion ed è installata una versione precedente dell'app, l'utente viene indirizzato al Play Store per aggiornare l'app. L'app Android deve essere registrata nella Console.
handleCodeInApp Bool Indica se il collegamento all'azione e-mail verrà aperto prima in un'app mobile o in un collegamento Web. L'impostazione predefinita è falsa. Se impostato su true, il collegamento al codice dell'azione verrà inviato come collegamento universale o collegamento all'app Android e verrà aperto dall'app, se installata. Nel caso falso, il codice verrà prima inviato al widget Web e poi continuando verrà reindirizzato all'app se installata.
dynamicLinkDomain Corda Imposta il dominio del collegamento dinamico (o sottodominio) 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 esplicitamente uno. Se non ne viene fornito alcuno, per impostazione predefinita viene utilizzato il primo dominio.

Obiettivo-C

Parametro Tipo Descrizione
URL NSString

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

  • Quando il collegamento viene gestito nei widget delle azioni Web, questo è il collegamento diretto nel parametro di query continueUrl .
  • Quando il collegamento viene gestito direttamente nell'app, questo è il parametro di query continueUrl nel collegamento diretto del collegamento dinamico.
iOSBundleID NSString Imposta l'ID del pacchetto. Questo tenterà di aprire il collegamento in un'app Apple, se installata. L'app deve essere registrata nella Console.
androidPackageName NSString Imposta il nome del pacchetto Android. Questo tenterà di aprire il collegamento in un'app Android, se installata.
androidInstallIfNotAvailable BOOL specifica se installare l'app Android se il dispositivo la supporta e l'app non è già installata. Se questo campo viene fornito senza packageName, viene generato un errore che spiega che packageName deve essere fornito insieme a questo campo.
androidMinimumVersion NSString La versione minima dell'app supportata in questo flusso. Se viene specificato MinimumVersion ed è installata una versione precedente dell'app, l'utente viene indirizzato al Play Store per aggiornare l'app. L'app Android deve essere registrata nella Console.
handleCodeInApp BOOL Indica se il collegamento all'azione e-mail verrà aperto prima in un'app mobile o in un collegamento Web. L'impostazione predefinita è falsa. Se impostato su true, il collegamento al codice dell'azione verrà inviato come collegamento universale o collegamento all'app Android e verrà aperto dall'app, se installata. Nel caso falso, il codice verrà prima inviato al widget Web e poi continuando verrà reindirizzato all'app se installata.
dynamicLinkDomain NSString Imposta il dominio del collegamento dinamico (o sottodominio) 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 esplicitamente uno. Se non ne viene fornito alcuno, per impostazione predefinita viene utilizzato il primo dominio.

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

Veloce


var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minimumVersion:"12")
// When multiple custom dynamic link domains are defined, specify which one to use.
actionCodeSettings.dynamicLinkDomain = "example.page.link"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Obiettivo-C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 // When multiple custom dynamic link domains are defined, specify which one to use.
 actionCodeSettings.dynamicLinkDomain = @"example.page.link";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

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

  1. Abilita i collegamenti dinamici Firebase:

    1. Nella console Firebase , apri la sezione Collegamenti dinamici .
    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. Un dominio Dynamic Links in genere assomiglia al seguente esempio:

      example.page.link

      Avrai bisogno di questo valore quando configuri la tua app Apple 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 della domanda.
    2. Dovrai inoltre configurare il filtro intent per il collegamento diretto nel file AndroidManifest.xml.
    3. Per ulteriori informazioni, fare riferimento alle istruzioni sulla ricezione dei collegamenti dinamici Android .
  3. Configurazione delle applicazioni Apple:

    1. Se prevedi di gestire questi collegamenti dalla tua applicazione, l'ID del pacchetto deve essere specificato nelle impostazioni del progetto della Console Firebase. Inoltre è necessario specificare anche l'ID dell'App Store e l'ID del team di 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 l'ID del pacchetto come schema personalizzato per gli URL in entrata.
    4. Per ulteriori informazioni, fare riferimento alle istruzioni sulla ricezione dei collegamenti dinamici sulle piattaforme Apple .

Gestione delle azioni di posta elettronica in un'applicazione Web

È possibile specificare se si desidera gestire prima il collegamento del codice azione da un'applicazione Web e quindi reindirizzarlo a un'altra pagina Web o applicazione mobile una volta completato con successo, a condizione che l'applicazione mobile sia disponibile. A tale scopo, impostare handleCodeInApp su false nell'oggetto FIRActionCodeSettings (Obj-C) o ActionCodeSettings (Swift). Sebbene non sia richiesto un ID pacchetto o un nome pacchetto Android, fornirli consentirà all'utente di reindirizzare all'app specificata al completamento del codice di azione e-mail.

L'URL Web utilizzato qui è quello configurato nella sezione dei modelli di azioni e-mail. Ne viene fornito uno predefinito per tutti i progetti. Fare riferimento a personalizzazione dei gestori di posta elettronica per ulteriori informazioni su come personalizzare il gestore delle 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 . Anche se puoi intercettare e gestire il collegamento in entrata dalla tua app senza alcuna dipendenza aggiuntiva, ti consigliamo di utilizzare la libreria client FDL per analizzare il collegamento diretto per te.

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

Gestione delle azioni e-mail in un'applicazione mobile

È possibile specificare se si desidera gestire prima il collegamento del codice azione all'interno dell'applicazione mobile, a condizione che sia installata. Con le applicazioni Android hai anche la possibilità di specificare tramite androidInstallIfNotAvailable che l'app deve essere installata se il dispositivo la supporta e non è già installata. Se si fa clic sul collegamento da un dispositivo che non supporta l'applicazione mobile, verrà invece aperto da una pagina Web. A tale scopo, impostare handleCodeInApp su true nell'oggetto FIRActionCodeSettings (Obj-C) o ActionCodeSettings (Swift). Sarà inoltre necessario specificare il nome del pacchetto Android o l'ID bundle dell'applicazione mobile. L'URL Web di fallback utilizzato qui, quando non è disponibile alcuna app mobile, è quello configurato nella sezione dei modelli di azioni email. Ne viene fornito uno predefinito per tutti i progetti. Fare riferimento a personalizzazione dei gestori di posta elettronica per ulteriori informazioni su come personalizzare il gestore delle azioni di posta elettronica.

In questo caso, il collegamento dell'app mobile inviato all'utente sarà un collegamento FDL il cui payload è l'URL del codice dell'azione, configurato nella Console, con i parametri di query oobCode , mode , apiKey e continueUrl . Quest'ultimo sarà l' URL originale specificato nell'oggetto FIRActionCodeSettings (Obj-C) o ActionCodeSettings (Swift). Anche se puoi intercettare e gestire il collegamento in entrata dalla tua app senza alcuna dipendenza aggiuntiva, ti consigliamo di utilizzare la libreria client FDL per analizzare il collegamento diretto per te. Il codice dell'azione può essere applicato direttamente da un'applicazione mobile in modo simile a come viene gestito dal flusso web descritto nella sezione personalizzazione dei gestori di posta elettronica .

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