Na tej stronie dowiesz się, jak zacząć korzystać z Firebase Phone Number Verification w aplikacji na Androida. Ogólny opis tej funkcji znajdziesz w omówieniu.
Wykonując czynności opisane na tej stronie, możesz szybko rozpocząć wdrażanie wzorców przeglądania w usłudze Firebase PNV. Do celów testowych wygenerujesz token tylko do testowania, który będzie odpowiadał fałszywemu numerowi telefonu. Za pomocą tego tokena testowego możesz zacząć dodawać Firebase PNV do aplikacji bez konieczności posiadania konta rozliczeniowego lub urządzenia z prawdziwą kartą SIM.
Gdy uznasz, że interfejs użytkownika Firebase PNV w aplikacji jest zadowalający, możesz wykonać kilka dodatkowych czynności, aby przygotować aplikację do środowiska produkcyjnego.
Zanim zaczniesz
Dodaj Firebase do projektu aplikacji na Androida, jeśli nie korzystasz w nim jeszcze z tej usługi.
Upewnij się, że aplikacja spełnia te wymagania:
- Wartość
minSdkaplikacji to 24 (Android 7.0) lub więcej. - Urządzenie lub emulator ma Usługi Google Play. W przypadku emulatorów użyj obrazu systemu, który zawiera Google Play.
- Aby zweryfikować prawdziwe numery telefonów w środowisku produkcyjnym, urządzenie musi mieć Androida 9 (poziom interfejsu API 28) lub nowszego i korzystać z karty SIM obsługiwanego operatora. Tryb testowy opisany na tej stronie nie wymaga prawdziwej karty SIM.
- Wartość
1. Dodawanie biblioteki Firebase PNV do aplikacji
W pliku Gradle modułu (na poziomie aplikacji) (zwykle<project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) dodaj zależność z biblioteką Firebase Phone Number Verification na Androida. Zalecamy używanie Firebase Android BoM do kontrolowania obsługi wersji biblioteki.
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") }
Gdy korzystasz z Firebase Android BoM, aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.
(Alternatywa) Dodaj zależności biblioteki Firebase bez używania BoM
Jeśli nie zdecydujesz się na użycie Firebase BoM, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.
Pamiętaj, że jeśli w aplikacji używasz kilku bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek, co zapewnia zgodność wszystkich wersji.
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. Zainicjuj bibliotekę Firebase PNV w trybie testowym
W konsoli Firebase otwórz kartę Zabezpieczenia > Weryfikacja telefoniczna > Ustawienia > Testowanie.
Kliknij Wygeneruj token, wybierz kod kraju, a następnie ponownie kliknij Wygeneruj token, aby utworzyć i skopiować token.
Udostępnij token kompilacjom do debugowania aplikacji bez kodowania go na stałe w kodzie źródłowym. Traktuj token jak dane logowania i nie umieszczaj go w systemie kontroli wersji. Możesz na przykład dodać go do pliku
local.propertiesprojektu, który nie jest sprawdzany w systemie kontroli wersji:fpnv.testToken=COPIED_TOKEN_STRINGNastępnie udostępnij go jako pole
BuildConfigw plikubuild.gradle.ktsmodułu (na poziomie aplikacji). W poniższym przykładzie odczytywana jest też zmienna środowiskowaFPNV_TEST_TOKEN, co jest przydatne na serwerach CI, które nie mają plikulocal.properties. Kompilacje do publikacji otrzymują pustą wartość:// 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", "\"\"") } } }W aplikacji włącz sesję testową raz na proces aplikacji:
Kotlin
FirebasePhoneNumberVerification.getInstance()zwraca tę samą instancję domyślnegoFirebaseAppza każdym razem, gdy ją wywołujesz, więc używaj jej we wszystkich wywołaniach Firebase PNV.Wywołaj
enableTestSession()tylko raz na proces aplikacji. Drugie wywołanie powoduje zgłoszenie błęduFirebasePhoneNumberVerificationExceptionz kodem błęduTEST_SESSION_ALREADY_ENABLED, więc nie wywołuj go zActivity, który można odtworzyć (np. podczas obracania ekranu). Zamiast tego wywołaj ją z klasyApplication: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) } }Zarejestruj klasę w manifeście aplikacji:
<application android:name=".MyApplication" ... >
Tokeny testowe mają 7-dniowy czas życia. Po tym okresie musisz wygenerować nowy token, aby umożliwić sesje testowe. Wygasły token nie powoduje błędu, dopóki nie wywołasz funkcji getVerifiedPhoneNumber(). Tokeny testowe działają na urządzeniach fizycznych i emulatorach z usługami Google Play, dzięki czemu idealnie nadają się do prototypowania UX w aplikacji. Możesz ich też używać do testowania w CI/CD, jeśli wymieniasz token co najmniej co 7 dni.
Tokeny numerów telefonów, które aplikacja otrzymuje w trybie testowym, są podpisywane tak samo jak tokeny produkcyjne, ale zawierają deklarację "test_number": true. Upewnij się, że Twój produkcyjny backend odrzuca tokeny z tym oświadczeniem.
3. Zalecane: sprawdź, czy Firebase PNV jest obsługiwany
Aby określić, kiedy wyświetlać interfejs wprowadzania numeru lub interfejs z wyjaśnieniem, zalecamy sprawdzenie przy uruchamianiu aplikacji, czy urządzenie i jego karta SIM obsługują Firebase PNV. Jest to wstępna weryfikacja, która nie wymaga zgody użytkownika. Na podstawie wyniku tego testu możesz zdecydować, czy chcesz zainicjować proces Firebase PNV, czy użyć alternatywnej metody weryfikacji numeru telefonu, np. SMS-a.
Aby sprawdzić zgodność urządzenia, wywołaj metodę getVerificationSupportInfo(). Gdy sesja testowa jest aktywna, ta metoda zawsze zwraca listę zawierającą pojedynczy obsługiwany wpis dla tokena testowego, bez kontaktu z backendem Firebase PNV. Oznacza to, że w trybie testowym nie możesz sprawdzić działania kreacji zastępczej na nieobsługiwanych urządzeniach. Później, gdy aplikacja będzie już w wersji produkcyjnej, ta metoda będzie zwracać wynik dla każdej karty SIM w urządzeniu.
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. Rozpoczynanie procesu weryfikacji
Aby rozpocząć proces Firebase PNV, wywołaj metodę getVerifiedPhoneNumber(). Przekaż obiekt Activity, ponieważ metoda wyświetla ekran zgody. Context, który nie jest Activity, np. kontekst Application, kończy się niepowodzeniem z kodem błędu 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.
}
Metoda getVerifiedPhoneNumber() przeprowadza cały proces weryfikacji numeru telefonu, w tym:
- używanie Menedżera danych logowania na Androidzie do uzyskiwania zgody użytkownika na udostępnianie jego numeru telefonu;
- Wysyłam żądanie do backendu Firebase PNV.
- Zwrócenie tokena zawierającego zweryfikowany numer telefonu urządzenia (w aplikacji produkcyjnej jest to moment, w którym następuje rozliczenie).
5. Obsługuj błędy
Gdy wywołanie Firebase PNV się nie powiedzie, wyjątek to FirebasePhoneNumberVerificationException. Użyj errorCode, aby zdecydować, co zrobić dalej, na przykład wrócić do weryfikacji SMS-em, gdy użytkownik nie wyrazi zgody. W artykule Obsługa błędów Firebase PNV na Androidzie znajdziesz wszystkie kody błędów, informacje o tym, kiedy występują, oraz zalecane działania.
Dalsze kroki
Na tej stronie dowiesz się, jak przeprowadzić integrację z Firebase PNV za pomocą ujednoliconego interfejsu API z pojedynczym wywołaniem. Wywołanie jednej metody obsługuje cały wzorzec przeglądania użytkownika Firebase PNV, od uzyskania zgody użytkownika po wykonanie niezbędnych wywołań sieciowych do backendu Firebase PNV. Dzięki tej metodzie ograniczysz kroki integracji do jednego wywołania metody.
Ten interfejs API jest zalecany dla większości deweloperów. Jeśli jednak masz określone wymagania, których biblioteka nie spełnia, zapoznaj się ze stroną Dostosowywanie procesu Firebase Phone Number Verification, aby dowiedzieć się, jak wdrożyć proces niestandardowy.
Jeśli używasz zweryfikowanego numeru telefonu poza klientem aplikacji, zamiast samego numeru telefonu przekazuj token, aby móc zweryfikować jego integralność podczas używania. Zobacz Weryfikowanie tokenów Firebase PNV.
Aby logować użytkowników w aplikacji Firebase Authentication za pomocą ich zweryfikowanego numeru telefonu, zapoznaj się z artykułem Uwierzytelnianie w Firebase za pomocą Firebase Phone Number Verification.
Szczegółowe instrukcje tworzenia kompletnej przykładowej aplikacji znajdziesz w ćwiczeniach z programowania Firebase Phone Number Verification.
Po wdrożeniu i przetestowaniu procesu Firebase PNV oraz integracji backendu aplikacji możesz wprowadzić ją do środowiska produkcyjnego, aby zacząć otrzymywać prawdziwe, zweryfikowane numery telefonów. Zobacz Przechodzenie na tryb produkcyjny.
Pełny interfejs API znajdziesz w dokumentacji interfejsu API Firebase PNV.