Puoi passare lo stato tramite un URL continuo quando invii azioni email per reimpostare la password o verificare l'email di un utente. Ciò fornisce all'utente la possibilità di tornare 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.
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 agli account verificati. Ad esempio, un'app per newsletter potrebbe richiedere all'utente di verificare la propria e-mail prima di iscriversi. L'utente eseguirà il flusso di verifica tramite posta elettronica e si aspetterà di essere riportato all'app per completare l'abbonamento.
In generale, quando un utente avvia un flusso di reimpostazione della password o di verifica della posta elettronica su un'app Apple, si aspetta di completare il flusso all'interno dell'app; la possibilità di passare lo stato tramite l'URL continuo lo rende possibile.
Avere 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 dell'URL di stato/continua nelle azioni email
Per trasmettere in modo sicuro un URL continuo, 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 FIRActionCodeSettings
quando si invia un'e-mail di reimpostazione della password o un'e-mail di verifica. Questa interfaccia accetta i seguenti parametri:
Rapido
Parametro | Tipo | Descrizione |
---|---|---|
URL | Corda | Imposta il collegamento (stato/continua URL) che ha significati diversi in contesti diversi:
|
iOSBundleID | Corda | Imposta l'ID pacchetto. Questo proverà ad 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 proverà ad 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 un packageName, viene generato un errore che spiega che il packageName deve essere fornito insieme a questo campo. |
androidMinimumVersion | Corda | La versione minima dell'app supportata in questo flusso. Se si specifica 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 | 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 del codice 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 continue reindirizzerà all'app se installata. |
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 di collegamento dinamico per progetto, questo campo offre la possibilità di sceglierne esplicitamente uno. Se non ne viene fornito nessuno, per impostazione predefinita viene utilizzato il primo dominio. |
Obiettivo-C
Parametro | Tipo | Descrizione |
---|---|---|
URL | NSString | Imposta il collegamento (stato/continua URL) che ha significati diversi in contesti diversi:
|
iOSBundleID | NSString | Imposta l'ID pacchetto. Questo proverà ad 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 proverà ad 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 un packageName, viene generato un errore che spiega che il packageName deve essere fornito insieme a questo campo. |
androidMinimumVersion | NSString | La versione minima dell'app supportata in questo flusso. Se si specifica 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 | 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 del codice 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 continue reindirizzerà all'app se installata. |
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 di collegamento dinamico per progetto, questo campo offre la possibilità di sceglierne esplicitamente uno. Se non ne viene fornito nessuno, 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 per dispositivi mobili come collegamento dinamico Firebase utilizzando il dominio del 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 deep link conterrà il payload dell'URL continuo https://www.example.com/?email=user@example.com
.
Rapido
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. })
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. }];
Configurazione dei link dinamici Firebase
Firebase Auth utilizza Firebase Dynamic Links quando invia un collegamento che deve essere aperto in un'applicazione mobile. Per utilizzare questa funzione, i collegamenti dinamici devono essere configurati nella console di Firebase.
Abilita collegamenti dinamici Firebase:
- Nella console Firebase , apri la sezione Collegamenti dinamici .
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 è simile 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.
Configurazione delle applicazioni Android:
- Se prevedi di gestire questi collegamenti dalla tua applicazione Android, il nome del pacchetto Android deve essere specificato nelle impostazioni del progetto Firebase Console. Inoltre, è necessario fornire SHA-1 e SHA-256 del certificato dell'applicazione.
- Dovrai anche configurare il filtro intent per il deep link nel tuo file AndroidManifest.xml.
- Per ulteriori informazioni, consulta le istruzioni relative alla ricezione di collegamenti dinamici Android .
Configurazione delle applicazioni Apple:
- Se prevedi di gestire questi collegamenti dalla tua applicazione, l'ID pacchetto deve essere specificato nelle impostazioni del progetto della console Firebase. Inoltre, è necessario specificare anche l'ID App Store e l'ID Apple Developer Team.
- Sarà inoltre necessario configurare il dominio di collegamento universale FDL come dominio associato nelle funzionalità dell'applicazione.
- Se prevedi di distribuire la tua applicazione alle versioni iOS 8 e precedenti, dovrai impostare l'ID bundle come schema personalizzato per gli URL in entrata.
- Per ulteriori informazioni, fare riferimento alle istruzioni relative alla ricezione dei collegamenti dinamici delle piattaforme Apple .
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 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 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 azione email. Ne 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 dell'azione 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 collegamento profondo 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 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 il collegamento viene cliccato 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à necessario specificare anche il nome del pacchetto Android o l'ID bundle dell'applicazione per dispositivi mobili. L'URL Web di fallback utilizzato qui, quando non è disponibile alcuna app per dispositivi mobili, è quello configurato nella sezione dei modelli di azione email. Ne 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 dell'azione 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 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 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 per dispositivi mobili 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 e-mail, il codice dell'azione dal parametro di query oobCode
deve essere analizzato dal collegamento profondo e quindi applicato tramite applyActionCode
affinché la modifica abbia effetto, ovvero l'e-mail da verificare.