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

Passaggio dello stato nelle azioni e-mail

È possibile passare lo stato tramite un URL continuo quando si inviano azioni e-mail per reimpostare la password o si verifica la posta elettronica di un utente. Ciò fornisce all'utente la possibilità di essere restituito all'app dopo il completamento dell'azione. Inoltre, è possibile specificare se gestire il collegamento dell'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 al contenuto che richiede 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 agli account verificati. Ad esempio, un'app di newsletter potrebbe richiedere all'utente di verificare la propria e-mail prima di iscriversi. L'utente passerà attraverso il flusso di verifica della posta elettronica e si aspetterà di essere restituito all'app per completare l'abbonamento.

  • In generale, quando un utente inizia un ripristino della password o un flusso di verifica della posta elettronica su un'app iOS, si aspettano di completare il flusso all'interno dell'app; la possibilità di passare lo stato tramite URL di continuazione lo rende possibile.

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

Passaggio stato / continua URL nelle azioni e-mail

Per passare in modo sicuro un URL di continuazione, il dominio per l'URL dovrà essere inserito nella whitelist nella console di 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 FIRActionCodeSettings un'istanza FIRActionCodeSettings quando si invia un'e-mail di reimpostazione della password o e-mail di verifica. Questa interfaccia accetta i seguenti parametri:

veloce

Parametro genere Descrizione
URL Corda

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 della query continueUrl .
  • Quando il collegamento viene gestito direttamente nell'app, questo è il parametro di query continueUrl nel collegamento diretto di Dynamic Link.
iOSBundleID Corda Imposta l'ID del bundle iOS. Questo tenterà di aprire il collegamento in un'app iOS se è installata. L'app per iOS 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 se l'app non è già installata. Se questo campo viene fornito senza un nome pacchetto, viene generato un errore che spiega che il nome pacchetto deve essere fornito insieme a questo campo.
androidMinimumVersion Corda La versione minima dell'app supportata in questo flusso. Se viene specificato minimumVersion e viene installata una versione precedente dell'app, l'utente viene portato nel Play Store per aggiornare l'app. L'app per Android deve essere registrata nella console.
handleCodeInApp Bool Se il collegamento dell'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 del codice di azione verrà inviato come collegamento universale o collegamento app Android e verrà aperto dall'app se installato. Nel caso falso, il codice verrà prima inviato al widget web e poi continuerà il reindirizzamento all'app se installato.
dynamicLinkDomain Corda Imposta il dominio di collegamento dinamico (o sottodominio) da utilizzare per il collegamento corrente se deve essere aperto utilizzando Firebase Dynamic Links. Poiché è possibile configurare più domini a collegamento dinamico per progetto, questo campo offre la possibilità di sceglierne esplicitamente uno. Se non ne viene fornito nessuno, il primo dominio viene utilizzato per impostazione predefinita.

Objective-C

Parametro genere Descrizione
URL NSString

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 della query continueUrl .
  • Quando il collegamento viene gestito direttamente nell'app, questo è il parametro di query continueUrl nel collegamento diretto di Dynamic Link.
iOSBundleID NSString Imposta l'ID del bundle iOS. Questo tenterà di aprire il collegamento in un'app iOS se è installata. L'app per iOS 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 se l'app non è già installata. Se questo campo viene fornito senza un nome pacchetto, viene generato un errore che spiega che il nome pacchetto deve essere fornito insieme a questo campo.
androidMinimumVersion NSString La versione minima dell'app supportata in questo flusso. Se viene specificato minimumVersion e viene installata una versione precedente dell'app, l'utente viene portato nel Play Store per aggiornare l'app. L'app per Android deve essere registrata nella console.
handleCodeInApp BOOL Se il collegamento dell'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 del codice di azione verrà inviato come collegamento universale o collegamento app Android e verrà aperto dall'app se installato. Nel caso falso, il codice verrà prima inviato al widget web e poi continuerà il reindirizzamento all'app se installato.
dynamicLinkDomain NSString Imposta il dominio di collegamento dinamico (o sottodominio) da utilizzare per il collegamento corrente se deve essere aperto utilizzando Firebase Dynamic Links. Poiché è possibile configurare più domini a collegamento dinamico per progetto, questo campo offre la possibilità di sceglierne esplicitamente uno. Se non ne viene fornito nessuno, il primo dominio viene utilizzato per impostazione predefinita.

L'esempio seguente mostra come inviare un collegamento di verifica e-mail che verrà aperto prima in un'app mobile come collegamento dinamico Firebase usando il dominio di collegamento dinamico personalizzato example.page.link (app iOS com.example.ios o app Android com.example.android cui verrà installata l'app se non è già installata e la versione minima è 12 ). Il collegamento diretto conterrà il payload dell'URL continuo 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,
                                         minumumVersion:"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.
})

Objective-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 i collegamenti dinamici Firebase quando invia un collegamento che si intende aprire in un'applicazione mobile. Per utilizzare questa funzione, i collegamenti dinamici devono essere configurati nella console di Firebase.

  1. Abilita collegamenti dinamici Firebase:

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

      Se hai già creato un dominio Dynamic Link, prendine nota. Un dominio Dynamic Links si presenta in genere come nell'esempio seguente:

      example.page.link

      Sarà necessario questo valore quando si configura l'app iOS o Android per intercettare il collegamento in entrata.

  2. Configurazione di applicazioni Android:

    1. Se si prevede di gestire questi collegamenti dall'applicazione Android, è necessario specificare il nome del pacchetto Android nelle impostazioni del progetto Firebase Console. Inoltre, è necessario fornire SHA-1 e SHA-256 del certificato dell'applicazione.
    2. Sarà inoltre necessario configurare il filtro intenti per il collegamento diretto nel file AndroidManifest.xml.
    3. Per ulteriori informazioni, consultare le istruzioni per la ricezione di collegamenti dinamici Android .
  3. Configurazione di applicazioni iOS:

    1. Se si prevede di gestire questi collegamenti dall'applicazione iOS, è necessario specificare l'ID del bundle iOS nelle impostazioni del progetto Console Firebase. Inoltre, è necessario specificare 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 su iOS versioni 8 e precedenti, dovrai impostare il tuo ID bundle iOS come uno schema personalizzato per gli URL in arrivo.
    4. Per ulteriori informazioni, consultare la sezione Ricezione delle istruzioni per i collegamenti dinamici iOS .

Gestione delle azioni e-mail in un'applicazione Web

È possibile specificare se si desidera prima gestire il collegamento del codice di azione da un'applicazione Web e quindi reindirizzare a un'altra pagina Web o applicazione mobile dopo il completamento con esito positivo, a condizione che l'applicazione mobile sia disponibile. Questo viene fatto impostando handleCodeInApp su false FIRActionCodeSettings (Obj-C) o ActionCodeSettings (Swift). Sebbene non siano richiesti un ID bundle iOS o il nome del 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 azione e-mail. Uno predefinito è previsto per tutti i progetti. Fare riferimento alla personalizzazione dei gestori di e-mail per ulteriori informazioni su come personalizzare il gestore di azioni e-mail.

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 sia possibile intercettare e gestire il collegamento in entrata dall'app senza alcuna dipendenza aggiuntiva, si consiglia di utilizzare la libreria client FDL per analizzare il collegamento diretto per l'utente.

Quando si gestiscono azioni e-mail come la verifica e-mail, il codice di azione dal parametro di query oobCode deve essere analizzato dal collegamento applyActionCode e quindi applicato tramite applyActionCode per applyActionCode la modifica, ovvero e-mail da verificare.

Gestione delle azioni e-mail in un'applicazione mobile

È possibile specificare se si desidera prima gestire il collegamento del codice di azione all'interno dell'applicazione mobile, a condizione che sia installato. Con le applicazioni Android, puoi anche 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, viene invece aperto da una pagina Web. Questo viene fatto impostando handleCodeInApp su true FIRActionCodeSettings (Obj-C) o ActionCodeSettings (Swift). Sarà inoltre necessario specificare il nome del pacchetto Android dell'applicazione o l'ID del pacchetto iOS. L'URL Web di fallback utilizzato qui, quando non è disponibile un'app mobile, è quello configurato nella sezione dei modelli di azione e-mail. Uno predefinito è previsto per tutti i progetti. Fare riferimento alla personalizzazione dei gestori di e-mail per ulteriori informazioni su come personalizzare il gestore di azioni e-mail.

In questo caso, il collegamento dell'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 FIRActionCodeSettings (Obj-C) o ActionCodeSettings (Swift). Sebbene sia possibile intercettare e gestire il collegamento in entrata dall'app senza alcuna dipendenza aggiuntiva, si consiglia di utilizzare la libreria client FDL per analizzare il collegamento diretto per l'utente. Il codice di azione può essere applicato direttamente da un'applicazione mobile 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 e-mail, il codice di azione dal parametro di query oobCode deve essere analizzato dal collegamento applyActionCode e quindi applicato tramite applyActionCode per applyActionCode la modifica, ovvero e-mail da verificare.