Puoi trasmettere lo stato tramite un URL di continuazione quando invii azioni email per il ripristino della password o la verifica dell'email di un utente. In questo modo, l'utente può tornare all'app dopo aver completato l'azione. Inoltre, puoi specificare se gestire il link di azione email direttamente da un'applicazione mobile quando è installata anziché da una pagina web.
Questa opzione può essere estremamente utile nei seguenti scenari comuni:
Un utente che non ha eseguito l'accesso potrebbe tentare di accedere a contenuti che richiedono 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 cercando 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 email prima di iscriversi. L'utente seguirà il flusso di verifica dell'email e si aspetta di tornare all'app per completare l'abbonamento.
In generale, quando un utente inizia una procedura di reimpostazione della password o di verifica dell'email su un'app Apple, si aspetta di completarla all'interno dell'app. La possibilità di trasferire lo stato tramite l'URL di continuazione lo rende possibile.
La possibilità di passare lo stato tramite un URL di continuazione è una funzionalità potente fornita da Firebase Auth che può migliorare significativamente l'esperienza utente.
Trasferimento dello stato di un URL di continuazione nelle azioni email
Per trasmettere in modo sicuro un URL di continuazione, il dominio dell'URL deve essere inserito nella whitelist della console Firebase. Aggiungi questo dominio alla sezione Autenticazione, all'elenco dei domini autorizzati nella scheda Metodo di accesso, se non è già presente.
È necessario fornire un'istanza di FIRActionCodeSettings
quando si invia
un'email di reimpostazione della password o un'email di verifica. Questa interfaccia accetta i
seguenti parametri:
Swift
Parametro | Tipo | Descrizione |
---|---|---|
URL |
Stringa | Imposta il link (URL di stato/continua) che ha significati diversi in contesti diversi:
|
iOSBundleID |
Stringa | Imposta l'ID bundle iOS per aiutare Firebase Authentication a determinare se deve creare un link solo web o mobile che viene aperto su un dispositivo Apple |
androidPackageName |
Stringa | Imposta il nome del pacchetto Android per aiutare Firebase Authentication a determinare se deve creare un link solo web o mobile che viene aperto su un dispositivo Android |
handleCodeInApp |
Bool | Se il link dell'azione email verrà aperto prima in un'app mobile o in un link web. Il valore predefinito è false. Se impostato su true, il link del codice azione verrà inviato come link universale o link app per Android e verrà aperto dall'app, se installata. Nel caso di esito negativo, il codice verrà inviato prima al widget web e poi, se l'app è installata, verrà reindirizzato all'app. |
linkDomain |
Stringa | Quando vengono definiti domini di link di hosting personalizzati per un progetto,
specifica quale utilizzare quando il link deve essere aperto da un'app mobile
specifica. In caso contrario, viene selezionato automaticamente il dominio predefinito (ad
esempio,
PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
Stringa | Deprecato. Non specificare questo parametro. |
Objective-C
Parametro | Tipo | Descrizione |
---|---|---|
URL |
NSString | Imposta il link (URL di stato/continua) che ha significati diversi in contesti diversi:
|
iOSBundleID |
NSString | Imposta l'ID bundle iOS per aiutare Firebase Authentication a determinare se deve creare un link solo web o mobile che viene aperto su un dispositivo Android o Apple |
androidPackageName |
NSString | Imposta il nome del pacchetto Android per aiutare Firebase Authentication a determinare se deve creare un link solo web o mobile che viene aperto su un dispositivo Android o Apple |
handleCodeInApp |
BOOL | Se il link dell'azione email verrà aperto prima in un'app mobile o in un link web. Il valore predefinito è false. Se impostato su true, il link del codice azione verrà inviato come link universale o link app per Android e verrà aperto dall'app, se installata. Nel caso di esito negativo, il codice verrà inviato prima al widget web e poi, se l'app è installata, verrà reindirizzato all'app. |
linkDomain |
NSString | Quando vengono definiti domini di link Hosting personalizzati per un progetto,
specifica quale utilizzare quando il link deve essere aperto da un'app mobile
specifica. In caso contrario, viene selezionato automaticamente il dominio predefinito (ad esempio,
PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
NSString | Deprecato. Non specificare questo parametro. |
Il seguente esempio illustra come inviare un link di verifica email che
si aprirà prima in un'app mobile utilizzando il dominio del link Hosting personalizzato
custom-domain.com
. 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") // Specify a custom Hosting link domain to use. The domain must be // configured in Firebase Hosting and owned by the project. actionCodeSettings.linkDomain = "custom-domain.com" 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; // Specify a custom Hosting link domain to use. The domain must be // configured in Firebase Hosting and owned by the project. actionCodeSettings.linkDomain = @"custom-domain.com"; [actionCodeSettings setAndroidPackageName:@"com.example.android"]; [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings completion:^(NSError *_Nullable error) { if (error) { // Error occurred. Inspect error.code and handle error. return; } // Email verification sent. }];
Configurazione dei link Firebase Hosting
Firebase Authentication utilizza Firebase Hosting quando invia un link che deve essere aperto in un'applicazione mobile. Per utilizzare questa funzionalità, è necessario configurare i link Hosting nella console Firebase.
Configurazione delle applicazioni Apple:
- Se prevedi di gestire questi link dalla tua applicazione, dovrai configurare il dominio dei link Hosting come dominio associato nelle funzionalità dell'applicazione.
- Per saperne di più, consulta le istruzioni per ricevere i link di hosting per iOS.
Configurazione delle applicazioni Android:
- Se prevedi di gestire questi link dalla tua applicazione Android, il nome del pacchetto dell'app deve essere specificato nelle impostazioni del progetto della console Firebase. Inoltre, devono essere forniti SHA-1 e SHA-256 del certificato dell'applicazione.
- Devi anche configurare il filtro per intent per il link diretto nel
file
AndroidManifest.xml
. - Per saperne di più, consulta le istruzioni per ricevere i link di hosting Android.
Gestione delle azioni email in un'applicazione web
Puoi specificare se vuoi gestire prima il link del codice azione da un'applicazione web e poi reindirizzare a un'altra pagina web o applicazione mobile dopo il completamento, a condizione che l'applicazione mobile sia disponibile.
A questo scopo, imposta handleCodeInApp
su false
nell'oggetto
FIRActionCodeSettings
(Obj-C) o ActionCodeSettings
(Swift). Sebbene
un ID bundle
o un nome pacchetto Android non siano obbligatori, se li fornisci l'utente
potrà tornare all'app specificata al termine del codice di azione email.
L'URL web utilizzato qui è quello configurato nella sezione Modelli di azioni email. Ne viene eseguito il provisioning di uno predefinito per tutti i progetti. Per saperne di più su come personalizzare il gestore di azioni email, consulta Personalizzazione dei gestori email.
In questo caso, il link all'interno del parametro di query continueURL
sarà
un link Hosting il cui payload è URL
specificato nell'oggetto
ActionCodeSettings
.
Quando gestisci azioni email come la verifica email, il codice azione del parametro di query oobCode
deve essere analizzato dal link diretto e poi applicato tramite applyActionCode
affinché la modifica abbia effetto, ovvero l'email da verificare.
Gestione delle azioni email in un'applicazione mobile
Puoi specificare se vuoi gestire il link del codice azione all'interno della tua
applicazione mobile, a condizione che sia installata. Se si fa clic sul link da un dispositivo che non supporta l'applicazione mobile, il link viene aperto da una pagina web. A questo scopo, imposta handleCodeInApp
su true
nell'oggetto
FIRActionCodeSettings
(Obj-C) o ActionCodeSettings
(Swift). Dovrai specificare anche il nome del pacchetto Android o l'ID bundle dell'applicazione mobile. L'URL web di riserva utilizzato qui, quando non è disponibile un'app mobile, è quello configurato nella sezione dei modelli di azioni email. Per tutti i progetti viene eseguito il provisioning di uno predefinito. Per saperne di più su come personalizzare il gestore di azioni email, consulta Personalizzazione dei gestori email.
In questo caso, il link all'app mobile inviato all'utente sarà un link Hosting
il cui payload è l'URL del codice azione, configurato nella console, con i parametri
della query oobCode
, mode
, apiKey
e continueUrl
. Il secondo sarà l'URL
originale specificato nell'oggetto FIRActionCodeSettings
(Obj-C) o
ActionCodeSettings
(Swift). Il codice 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 email.
Quando gestisci azioni email come la verifica email, il codice azione del parametro di query oobCode
deve essere analizzato dal link diretto e poi applicato tramite applyActionCode
affinché la modifica abbia effetto, ovvero l'email da verificare.