In questa pagina viene descritto come iniziare a utilizzare Firebase Phone Number Verification in un'app per Android. Consulta la panoramica per una descrizione generale di questa funzionalità.
Seguendo i passaggi descritti in questa pagina, puoi iniziare rapidamente a implementare i flussi utente per Firebase PNV. A scopo di test, genererai un token di sola verifica che rimanda a un numero di telefono fittizio. Utilizzando questo token di test, puoi iniziare ad aggiungere Firebase PNV alla tua app senza bisogno di un account di fatturazione o di un dispositivo con una SIM reale.
Quando l'esperienza utente di Firebase PNV nella tua app ti soddisfa, puoi seguire alcuni passaggi aggiuntivi per mettere in produzione l'app.
Prima di iniziare
Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android.
Assicurati che la tua app soddisfi i seguenti requisiti:
- Il valore
minSdkdella tua app è 24 (Android 7.0) o superiore. - Il dispositivo o l'emulatore dispone di Google Play Services. Per gli emulatori, utilizza un'immagine di sistema che includa Google Play.
- Per verificare i numeri di telefono reali in produzione, il dispositivo deve eseguire Android 9 (livello API 28) o versioni successive e utilizzare una SIM di un operatore supportato. La modalità di test, descritta in questa pagina, non richiede una SIM reale.
- Il valore
1. Aggiungi la libreria Firebase PNV alla tua app
Nel file Gradle del modulo (a livello di app) (di solito<project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle), aggiungi la dipendenza per la libreria Firebase Phone Number Verification per Android. Ti consigliamo di utilizzare
Firebase Android BoM
per controllare il controllo delle versioni della libreria.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.1.0")) // Add the dependencies for the Firebase Phone Number Verification libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-pnv") }
Con la Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase Android.
(Alternativa) Aggiungi le dipendenze della libreria Firebase senza utilizzare BoM
Se scegli di non utilizzare la Firebase BoM, devi specificare ogni versione della libreria Firebase nella riga di dipendenza.
Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare BoM per gestire le versioni delle librerie, in modo da garantire che tutte le versioni siano compatibili.
dependencies { // Add the dependencies for the Firebase Phone Number Verification libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-pnv:17.0.0") }
2. Inizializza la libreria Firebase PNV in modalità di test
Nella console Firebase, vai a Sicurezza > Verifica telefonica > Impostazioni > scheda Test.
Fai clic su Genera token, seleziona un codice paese, quindi fai di nuovo clic su Genera token per creare e copiare il token.
Rendi il token disponibile per le build di debug della tua app senza impostarlo come hardcoded nel codice sorgente. Tratta il token come una credenziale e non includerlo nel controllo della versione. Ad esempio, aggiungila al file
local.propertiesdel tuo progetto, che non è sottoposto al controllo della versione:fpnv.testToken=COPIED_TOKEN_STRINGQuindi esponilo come campo
BuildConfignel filebuild.gradle.ktsdel modulo (a livello di app). L'esempio seguente legge anche una variabile di ambienteFPNV_TEST_TOKEN, utile sui server CI che non hanno un filelocal.properties. Le build di release ricevono un valore vuoto:// At the top of the file: import java.util.Properties val localProperties = Properties().apply { rootProject.file("local.properties").takeIf { it.exists() } ?.inputStream()?.use { load(it) } } val fpnvTestToken = System.getenv("FPNV_TEST_TOKEN")?.takeIf { it.isNotEmpty() } ?: localProperties.getProperty("fpnv.testToken", "") android { buildFeatures { buildConfig = true } buildTypes { debug { buildConfigField("String", "FPNV_TEST_TOKEN", "\"$fpnvTestToken\"") } release { buildConfigField("String", "FPNV_TEST_TOKEN", "\"\"") } } }Nella tua app, attiva una sessione di test una volta per processo dell'app:
Kotlin
FirebasePhoneNumberVerification.getInstance()restituisce la stessa istanza perFirebaseApppredefinito ogni volta che lo chiami, quindi utilizzalo per tutte le chiamate Firebase PNV.Chiama
enableTestSession()una sola volta per processo dell'app. Una seconda chiamata genera unFirebasePhoneNumberVerificationExceptioncon il codice di erroreTEST_SESSION_ALREADY_ENABLED, quindi non chiamarlo da unActivity, che può essere ricreato (ad esempio, quando lo schermo ruota). Chiamalo invece dalla classeApplication:import android.app.Application import android.util.Log import com.google.firebase.pnv.FirebasePhoneNumberVerification class MyApplication : Application() { override fun onCreate() { super.onCreate() if (!BuildConfig.DEBUG) return if (BuildConfig.FPNV_TEST_TOKEN.isEmpty()) { Log.w("MyApplication", "No Firebase PNV test token; test mode is off.") return } FirebasePhoneNumberVerification.getInstance() .enableTestSession(BuildConfig.FPNV_TEST_TOKEN) } }Registra la classe nel file manifest dell'app:
<application android:name=".MyApplication" ... >
I token di test hanno un TTL di 7 giorni. Trascorso questo periodo, dovrai generare un nuovo token per attivare le sessioni di test. Un token scaduto non causa un errore finché non chiami getVerifiedPhoneNumber(). I token di test funzionano su dispositivi fisici ed emulatori con Google Play Services, il che li rende ideali per la prototipazione della UX nella tua app. Puoi utilizzarli anche per i test in CI/CD se sostituisci il token almeno ogni 7 giorni.
I token dei numeri di telefono che la tua app riceve in modalità di test sono firmati come i token di produzione, ma includono l'attestazione "test_number": true. Assicurati che il tuo backend di produzione rifiuti i token con questa attestazione.
3. Consigliato: verifica il supporto di Firebase PNV
Per aiutarti a determinare quando mostrare la UI di inserimento del numero o la UI esplicativa, all'avvio dell'app è consigliabile verificare se il dispositivo e la relativa scheda SIM supportano Firebase PNV. Si tratta di un controllo preliminare che non richiede il consenso dell'utente. Puoi utilizzare il risultato di questo test per decidere se avviare il flusso Firebase PNV o utilizzare un metodo alternativo di verifica del numero di telefono, ad esempio tramite SMS.
Per verificare la compatibilità del dispositivo, chiama il metodo getVerificationSupportInfo(). Quando hai una sessione di test attiva, questo metodo restituisce sempre un elenco contenente una singola voce supportata per il token di test, senza contattare il backend Firebase PNV. Ciò significa che non puoi esercitare il fallback per i dispositivi non supportati
in modalità di test. In un secondo momento, dopo aver messo in produzione l'app, questo metodo restituirà un risultato per ogni SIM nel dispositivo.
Kotlin
val fpnv = FirebasePhoneNumberVerification.getInstance()
// Check all SIMs for support.
fpnv.getVerificationSupportInfo()
.addOnSuccessListener { results ->
if (results.any { it.isSupported() }) {
// At least one SIM is supported; okay to call getVerifiedPhoneNumber
// (see the next step).
} else {
// No SIMs are supported, so fall back to SMS verification.
}
}
.addOnFailureListener { e ->
// Handle error.
}
4. Avvia il flusso di verifica
Per avviare il flusso Firebase PNV, chiama il metodo getVerifiedPhoneNumber(). Passa un Activity, perché il metodo mostra la schermata per il consenso. Un Context che non è un Activity, ad esempio il contesto Application, non va a buon fine con il codice di errore ACTIVITY_CONTEXT_REQUIRED.
Kotlin
fpnv.getVerifiedPhoneNumber(this@MainActivity)
.addOnSuccessListener { result ->
// In test mode, this phone number will have a valid country code,
// followed by all zeros.
val phoneNumber = result.getPhoneNumber() // For display only.
val token = result.getToken()
// Verification successful. Send token to your backend, which reads
// the verified phone number from it. (See Next steps.)
}
.addOnFailureListener { e ->
// Handle failures, such as the user declining consent or a network
// error.
}
Il metodo getVerifiedPhoneNumber() esegue l'intero flusso di verifica del numero di telefono, tra cui:
- Utilizzo di Gestore delle credenziali di Android per acquisire il consenso dell'utente alla condivisione del proprio numero di telefono.
- Effettua la richiesta al backend Firebase PNV.
- Restituzione di un token contenente il numero di telefono verificato per il dispositivo (in un'app di produzione, questo è il momento in cui avviene la fatturazione).
5. Gestisci gli errori
Quando una chiamata Firebase PNV non va a buon fine, l'eccezione è un
FirebasePhoneNumberVerificationException. Utilizza il relativo errorCode per decidere cosa fare dopo, ad esempio per tornare alla verifica via SMS quando l'utente nega il consenso. Per ogni codice di errore, quando si verifica e il comportamento consigliato, consulta Gestisci gli errori di Firebase PNV su Android.
Passaggi successivi
In questa pagina viene descritto come eseguire l'integrazione con Firebase PNV utilizzando l'API unificata a chiamata singola. La chiamata di un singolo metodo gestisce l'intero flusso utente di Firebase PNV, dall'ottenimento del consenso dell'utente all'esecuzione delle chiamate di rete necessarie al backend di Firebase PNV. Utilizzando questo metodo, riduci i passaggi di integrazione a una singola chiamata al metodo.
Questa API è consigliata per la maggior parte degli sviluppatori. Tuttavia, se hai requisiti specifici non soddisfatti dalla libreria, consulta la pagina Personalizza il flusso Firebase Phone Number Verification per informazioni sull'implementazione di un flusso personalizzato.
Se utilizzi il numero di telefono verificato al di fuori del client dell'app, devi passare il token anziché il numero di telefono stesso, in modo da poterne verificare l'integrità quando lo utilizzi. Consulta Verifica dei token Firebase PNV.
Per consentire agli utenti di accedere a Firebase Authentication con il loro numero di telefono verificato, consulta Esegui l'autenticazione con Firebase utilizzando Firebase Phone Number Verification.
Per una procedura dettagliata che crea un'app di esempio completa, prova il codelab Firebase Phone Number Verification.
Dopo aver implementato e testato il flusso Firebase PNV e l'integrazione del backend della tua app, puoi metterla in produzione per iniziare a ricevere numeri di telefono verificati reali. Consulta Esegui l'upgrade alla modalità di produzione.
Per l'API completa, consulta il riferimento API Firebase PNV.