Puoi passare lo stato tramite un URL di continuazione quando invii azioni email per il ripristino della password o la verifica dell'indirizzo email di un utente. In questo modo, l'utente può essere reindirizzato 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.
Questo può essere estremamente utile nei seguenti scenari comuni:
Un utente che al momento 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 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 deve completare il flusso di verifica email e si aspetta di essere reindirizzato 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 passare lo stato tramite un URL di continuazione è una funzionalità potente fornita da Firebase Auth che può migliorare notevolmente l'esperienza utente.
Trasmissione dello stato di un URL di continuazione nelle azioni email
Per trasmettere in sicurezza un URL di continuazione, il dominio dell'URL dovrà essere inserito nella lista consentita 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
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 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 si apre 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 si apre su un dispositivo Android |
handleCodeInApp |
Bool | Indica se il link all'azione email deve essere aperto prima in un'app mobile o in un link web. Il valore predefinito è false. Se impostato su true, il link al codice di azione verrà inviato come link universale o link app per Android e verrà aperto dall'app, se installata. Nel caso in cui il valore sia falso, il codice verrà inviato prima al widget web e poi, al termine, reindirizzerà all'app se installata. |
linkDomain |
Stringa | Quando per un progetto sono definiti domini di link di hosting personalizzati,
specifica quale utilizzare quando il link deve essere aperto da un'app mobile specificata. Altrimenti, viene selezionato automaticamente il dominio predefinito (ad es.
PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
Stringa | Deprecato. Non specificare questo parametro. |
Objective-C
Parametro | Tipo | Descrizione |
---|---|---|
URL |
NSString | Imposta il link (URL 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 si apre 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 si apre su un dispositivo Android o Apple |
handleCodeInApp |
BOOL | Indica se il link all'azione email deve essere aperto prima in un'app mobile o in un link web. Il valore predefinito è false. Se impostato su true, il link al codice di azione verrà inviato come link universale o link app per Android e verrà aperto dall'app, se installata. Nel caso in cui il valore sia falso, il codice verrà inviato prima al widget web e poi, al termine, reindirizzerà all'app se installata. |
linkDomain |
NSString | Quando per un progetto sono definiti domini di link Hosting personalizzati,
specifica quale utilizzare quando il link deve essere aperto da un'app mobile specificata.
In caso contrario, viene selezionato automaticamente il dominio predefinito (ad es.
PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
NSString | Deprecato. Non specificare questo parametro. |
L'esempio seguente illustra come inviare un link di verifica via email che si aprirà prima in un'app mobile utilizzando il dominio del link personalizzato Hostingcustom-domain.com
. Il link diretto conterrà il payload dell'URL di continuahttps://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 da aprire in un'applicazione mobile. Per poter utilizzare questa funzionalità, è necessario configurare i link Hosting nella console Firebase.
Configurazione delle applicazioni Apple:
- Se prevedi di gestire questi link dalla tua applicazione, devi configurare il dominio del link Hosting come dominio associato nelle funzionalità della tua applicazione.
- Per saperne di più, consulta Istruzioni per la ricezione dei link di hosting per iOS.
Configurazione delle applicazioni Android:
- Se prevedi di gestire questi link dalla tua applicazione per Android, il nome del pacchetto dell'app 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 nel
file
AndroidManifest.xml
. - Per saperne di più, consulta Istruzioni per la ricezione dei link di hosting Android.
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). Anche se
un ID bundle
o il nome del pacchetto Android non sono obbligatori, fornirli consentirà all'utente di eseguire nuovamente il reindirizzamento all'app specificata al termine del codice di azione email.
L'URL web utilizzato qui è quello configurato nella sezione dei modelli di azioni email. Per tutti i progetti viene eseguito il provisioning di un valore predefinito. Per saperne di più su come personalizzare il gestore delle azioni email, consulta la sezione relativa alla personalizzazione dei gestori email.
In questo caso, il link all'interno del parametro di query continueURL
sarà un link Hosting il cui payload è il URL
specificato nell'oggetto ActionCodeSettings
.
Quando gestisci le 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. 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
nell'oggetto
FIRActionCodeSettings
(Obj-C) o ActionCodeSettings
(Swift). È necessario specificare anche il nome del pacchetto o l'ID gruppo Android dell'applicazione mobile. L'URL web di riserva utilizzato qui, quando non è disponibile alcuna app mobile, è quello configurato nella sezione dei modelli di azioni email. Per impostazione predefinita, viene eseguito il provisioning di un valore per tutti i progetti. Per saperne di più su come personalizzare il gestore delle azioni email, consulta la sezione relativa alla 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 di azione configurato nella Console con i parametri di query oobCode
, mode
, apiKey
e continueUrl
. Quest'ultimo sarà il
URL
originale specificato nell'oggetto FIRActionCodeSettings
(Obj-C) o
ActionCodeSettings
(Swift). 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 gestisci le 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.