Puoi passare lo stato tramite un URL di continuazione quando invii azioni email per il ripristino della password o la verifica dell'email di un utente. Ciò offre all'utente la possibilità di tornare all'app al termine dell'azione. Inoltre, puoi specificare se gestire il link all'azione email direttamente da un'applicazione mobile quando è installata anziché da una pagina web.
Ciò può essere estremamente utile nei seguenti scenari comuni:
Un utente che non ha eseguito l'accesso potrebbe tentare di accedere a contenuti che richiede che l'utente abbia eseguito l'accesso. Tuttavia, l'utente potrebbe aver dimenticato la password e quindi attivare il flusso di reimpostazione della password. Al termine 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 il proprio indirizzo email prima di iscriversi. L'utente seguiva la procedura di verifica dell'email e si aspettava da restituire all'app per completare l'abbonamento.
In genere, quando un utente avvia una procedura di reimpostazione della password o di verifica email su un'app Apple, si aspetta di completarla all'interno dell'app. La possibilità di passare lo stato tramite l'URL di continuazione rende tutto ciò possibile.
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.
Trasmissione dell'URL di stato/continuazione nelle azioni email
Per trasmettere in modo sicuro un URL Continua, il dominio dell'URL deve Essere autorizzati nella console Firebase. Per farlo, vai alla sezione Autenticazione e aggiungi il dominio all'elenco di domini autorizzati nella scheda Metodo di accesso, se non è già presente.
È necessario fornire un'istanza FIRActionCodeSettings
durante l'invio
un'email di reimpostazione della password o un'email di verifica. Questa interfaccia utilizza
seguenti parametri:
Swift
Parametro | Tipo | Descrizione |
---|---|---|
URL |
Stringa | Imposta il link (URL stato/continua) che ha significati diversi in contesti diversi:
|
iOSBundleID |
Stringa | Imposta l'ID del pacchetto. Questo proverà ad aprire il link in un'app Apple se dal momento dell'installazione. L'app deve essere registrata nella console. In caso contrario Viene fornito l'ID pacchetto. Il valore di questo campo è impostato sull'ID pacchetto di dal bundle principale dell'app. |
androidPackageName |
Stringa | Imposta il nome del pacchetto Android. Verrà tentato di aprire il link in un'app Android se è installata. |
androidInstallIfNotAvailable |
Bool | Specifica se installare l'app per 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 |
Stringa | La versione minima dell'app supportata in questo flusso. Se viene specificata la proprietà minimumVersion ed è installata una versione precedente dell'app, l'utente viene indirizzato al Play Store per eseguire l'upgrade dell'app. L'app Android deve essere registrata in Console. |
handleCodeInApp |
Bool | 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. Nel caso falso, il codice verrà inviato prima al widget web e poi al continuare reindirizzerà all'app se installata. |
dynamicLinkDomain |
Stringa | Imposta il dominio (o sottodominio) del link dinamico da utilizzare per il link corrente se deve essere aperto utilizzando Firebase Dynamic Links. Poiché è possibile configurare più domini di link dinamici per progetto, questo campo consente di sceglierne uno esplicitamente. Se non viene specificato alcun dominio, il primo dominio per impostazione predefinita. |
Objective-C
Parametro | Tipo | Descrizione |
---|---|---|
URL |
Stringa NS | Imposta il link (URL di stato/continua) che ha significati diversi. in diversi contesti:
|
iOSBundleID |
NSString | Imposta l'ID pacchetto. Questo proverà ad aprire il link in un'app Apple se dal momento dell'installazione. L'app deve essere registrata nella console. |
androidPackageName |
Stringa NS | Imposta il nome del pacchetto Android. Questo proverà ad aprire il link in un app per Android, se installata. |
androidInstallIfNotAvailable |
BOOL | specifica se installare l'app per 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 viene specificata la proprietà minimumVersion ed è installata una versione precedente dell'app, l'utente viene indirizzato al Play Store per eseguire l'upgrade dell'app. L'app Android deve essere registrata in Console. |
handleCodeInApp |
BOOL | 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 al codice di azione verrà inviato come link universale o link 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. |
dynamicLinkDomain |
NSString | Imposta il dominio (o sottodominio) del link dinamico da utilizzare per il link corrente se deve essere aperto utilizzando 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. |
Il seguente esempio illustra come inviare un link di verifica email che si aprirà inizialmente in un'app mobile come link dinamico Firebase utilizzando il dominio del link dinamico personalizzato example.page.link
(app per iOS com.example.ios
o app per Android com.example.android
in cui verrà installata l'app se non è già installata e la versione minima è 12
). Il link diretto conterrà il payload dell'URL di continuazione
https://www.example.com/?email=user@example.com
.
Swift
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. })
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. }];
Configurazione di Firebase Dynamic Links
Firebase Auth utilizza Firebase Dynamic Links quando invia un link che deve essere aperto in un'applicazione mobile. Per utilizzare questa funzionalità, i link dinamici devono essere configurati nella console di Firebase.
Attiva Firebase Dynamic Links:
- Nella console Firebase, apri la sezione Dynamic Links.
-
Se non hai ancora accettato i termini di Dynamic Links e creato un Dynamic Links dominio, fallo ora.
Se hai già creato un dominio Dynamic Links, prendine nota. Un dominio Dynamic Links è simile al seguente esempio:
example.page.link
Questo valore ti servirà quando configuri l'app Apple o Android per per intercettare il link in entrata.
Configurazione delle applicazioni Android:
- Se prevedi di gestire questi link dalla tua applicazione per Android, il nome del pacchetto Android deve essere specificato nelle impostazioni del progetto della Console Firebase. Inoltre, devono essere forniti gli hash SHA-1 e SHA-256 del certificato dell'applicazione.
- Dovrai anche configurare il filtro per intent per il link diretto del file AndroidManifest.xml.
- Per saperne di più, consulta Istruzioni per la ricezione dei link dinamici Android.
Configurazione delle applicazioni Apple:
- Se prevedi di gestire questi link dalla tua applicazione, L'ID pacchetto deve essere specificato nella console Firebase impostazioni progetto. Inoltre, è necessario specificare anche l'ID App Store e l'ID team sviluppatore Apple.
- Dovrai anche configurare il dominio del link universale FDL come Domini associati nelle funzionalità dell'applicazione.
- Se prevedi di distribuire la tua applicazione per le versioni di iOS 8 e precedenti, dovrai impostare l'ID pacchetto come schema personalizzato per gli URL in entrata.
- Per saperne di più, consulta Istruzioni per la ricezione dei link dinamici per le piattaforme Apple.
Gestione delle azioni email in un'applicazione web
Puoi specificare se vuoi gestire prima il link al codice di azione da un'applicazione web e poi reindirizzare a un'altra pagina web o applicazione mobile al termine dell'operazione, a condizione che l'applicazione mobile sia disponibile.
Per farlo, imposta handleCodeInApp
su false
nell'oggetto
FIRActionCodeSettings
(Obj-C) o ActionCodeSettings
(Swift). Mentre
un ID pacchetto
o il nome del pacchetto Android, se li specifichi consentirai all'utente
per reindirizzare all'app specificata al completamento del codice di azione dell'email.
L'URL web utilizzato qui è quello configurato nella sezione dei 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 nel parametro di query continueURL
verrà
un link FDL il cui payload è URL
specificato in ActionCodeSettings
. Anche se puoi intercettare e gestire il link in arrivo dalla tua app
senza ulteriori dipendenze, consigliamo di utilizzare la libreria client FDL
analizzare il link diretto.
Quando gestisci azioni email come la verifica email, il codice di azione del parametro di query oobCode
deve essere analizzato dal link diretto e poi applicato tramite applyActionCode
affinché la modifica venga applicata, ovvero l'email venga verificata.
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 applicazioni per Android,
puoi anche specificare tramite androidInstallIfNotAvailable
che
l'app deve essere installata se il dispositivo la supporta e non è già
installata.
Se il link viene fatto clic da un dispositivo che non supporta l'applicazione mobile, viene aperto da una pagina web.
Per farlo, imposta handleCodeInApp
su true
nel
Oggetto FIRActionCodeSettings
(Obj-C) o ActionCodeSettings
(Swift). La
devono essere presenti anche il nome o l'ID pacchetto Android dell'app mobile
specificato.L'URL web di riserva utilizzato qui, quando non sono disponibili app mobile,
quello configurato nella sezione dei modelli di azione email. Quella predefinita è
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 all'app mobile inviato all'utente sarà un link 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à il
l'elemento URL
originale specificato in FIRActionCodeSettings
(Obj-C) oppure
ActionCodeSettings
(Swift). Sebbene tu possa intercettare e gestire il link in entrata dalla tua app senza dipendenze aggiuntive, ti consigliamo di utilizzare la libreria client FDL per analizzare il link diretto. Il codice di azione può essere applicato direttamente da un'applicazione mobile in modo simile a come viene gestito dal flusso web descritto nella sezione sulla personalizzazione dei gestori 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.