Bu sayfada, Android uygulamasında Firebase Phone Number Verification kullanmaya nasıl başlayacağınız açıklanmaktadır. Bu özelliğin genel açıklaması için genel bakış bölümüne bakın.
Bu sayfadaki adımları uygulayarak Firebase PNV için kullanıcı işlemleri akışlarını uygulamaya hızlıca başlayabilirsiniz. Test amacıyla, sahte bir telefon numarasına yönlendiren ve yalnızca test için kullanılacak bir jeton oluşturacaksınız. Bu test jetonunu kullanarak faturalandırma hesabı veya gerçek SIM'i olan bir cihaz olmadan uygulamanıza Firebase PNV eklemeye başlayabilirsiniz.
Uygulamanızdaki Firebase PNV kullanıcı deneyiminden memnun kaldığınızda uygulamanızı üretime geçirmek için bazı ek adımları uygulayabilirsiniz.
Başlamadan önce
Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
Uygulamanızın aşağıdaki koşulları karşıladığından emin olun:
- Uygulamanızın
minSdkdeğeri 24 (Android 7.0) veya daha yüksek olmalıdır. - Cihaz veya emülatör, Android 10 (API düzeyi 29) veya sonraki bir sürümü çalıştırıyor ve Google Play Hizmetleri'ne sahip. Emülatörler için Google Play'i içeren Android 10 veya sonraki bir sürümün sistem görüntüsünü kullanın.
- Üretim aşamasında gerçek telefon numaralarını doğrulamak için cihazda desteklenen bir operatörün SIM kartı kullanılmalıdır. Bu sayfada açıklanan test modu için gerçek bir SIM gerekmez.
- Uygulamanızın
1. Firebase PNV kitaplığını uygulamanıza ekleme
Modülünüzün (uygulama düzeyinde) Gradle dosyasında (genellikle<project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle) Android için Firebase Phone Number Verification kitaplığına olan bağımlılığı ekleyin. Kitaplık sürümünü kontrol etmek için Firebase Android BoM kullanmanızı öneririz.
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") }
Firebase Android BoM kullanarak uygulamanızın her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanmasını sağlayabilirsiniz.
(Alternatif) BoM kullanmadan Firebase kitaplığı bağımlılıklarını ekleme
Firebase BoM kullanmamayı tercih ederseniz her Firebase kitaplığı sürümünü kendi bağımlılık satırında belirtmeniz gerekir.
Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM kullanmanızı önemle tavsiye ederiz. Bu sayede tüm sürümlerin uyumlu olmasını sağlayabilirsiniz.
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. Firebase PNV kitaplığını test modunda başlatma
Firebase konsolunda Security (Güvenlik) > Phone Verification (Telefon Doğrulama) > Settings (Ayarlar) > Testing (Test Etme) sekmesine gidin.
Jeton oluştur'u tıklayın, bir ülke kodu seçin ve ardından jetonunuzu oluşturup kopyalamak için tekrar Jeton oluştur'u tıklayın.
Jetonu, kaynak kodunuza sabit kodlamadan uygulamanızın hata ayıklama derlemelerinde kullanılabilir hale getirin. Jetonu bir kimlik bilgisi gibi değerlendirin ve sürüm denetiminin dışında tutun. Örneğin, projenizin sürüm denetimine dahil edilmeyen
local.propertiesdosyasına ekleyin:fpnv.testToken=COPIED_TOKEN_STRINGArdından, modülünüzün (uygulama düzeyinde)
build.gradle.ktsdosyasındaBuildConfigalanı olarak gösterin. Aşağıdaki örnekte ayrıca birFPNV_TEST_TOKENortam değişkeni okunur. Bu,local.propertiesdosyası olmayan CI sunucularında kullanışlıdır. Yayınlanan derlemeler boş bir değer alır:// 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", "\"\"") } } }Uygulamanızda, uygulama işlemi başına bir kez test oturumu etkinleştirin:
Kotlin
FirebasePhoneNumberVerification.getInstance(), her çağrıldığında varsayılanFirebaseAppiçin aynı örneği döndürür. Bu nedenle, tüm Firebase PNV çağrıları için bunu kullanın.enableTestSession()yöntemini uygulama işlemi başına yalnızca bir kez çağırın. İkinci bir çağrı,TEST_SESSION_ALREADY_ENABLEDhata koduyla birFirebasePhoneNumberVerificationExceptionhatası verir. Bu nedenle, yeniden oluşturulabilecek birActivityiçinden (ör. ekran döndürüldüğünde) çağrılmamalıdır. Bunun yerine,Applicationsınıfınızdan çağırın: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) } }Sınıfı uygulama manifestinize kaydedin:
<application android:name=".MyApplication" ... >
Test jetonlarının 7 günlük bir TTL'si vardır. Bu sürenin ardından test oturumlarını etkinleştirmek için yeni bir jeton oluşturmanız gerekir. Süresi dolmuş bir jeton, getVerifiedPhoneNumber() çağrılana kadar hataya neden olmaz. Test jetonları, Google Play Hizmetleri'nin yüklü olduğu fiziksel cihazlarda ve emülatörlerde çalışır. Bu nedenle, uygulamanızdaki kullanıcı deneyiminin prototipini oluşturmak için idealdir. Jetonu en az 7 günde bir değiştirirseniz CI/CD'de test etmek için de kullanabilirsiniz.
Uygulamanızın test modunda aldığı telefon numarası jetonları, üretim jetonları gibi imzalanır ancak "test_number": true hak talebini içerir. Üretim arka ucunuzun bu hak talebini içeren jetonları reddettiğinden emin olun.
3. Önerilen: Firebase PNV desteğini kontrol edin
Numara girişi kullanıcı arayüzünü veya açıklayıcı kullanıcı arayüzünü ne zaman göstereceğinizi belirlemenize yardımcı olması için uygulama başlatıldığında cihazın ve SIM kartının Firebase PNV özelliğini destekleyip desteklemediğini kontrol etmeniz önerilir. Bu, kullanıcı rızası gerektirmeyen bir ön kontroldür. Bu testin sonucunu kullanarak Firebase PNV akışını başlatmaya veya SMS gibi alternatif bir telefon numarası doğrulama yöntemi kullanmaya karar verebilirsiniz.
Cihazın uyumluluğunu kontrol etmek için getVerificationSupportInfo() yöntemini çağırın. Etkin bir test oturumunuz varken bu yöntem, Firebase PNV arka ucuyla iletişime geçmeden her zaman test jetonu için desteklenen tek bir giriş içeren bir liste döndürür. Bu nedenle, test modunda desteklenmeyen cihaz yedekleme özelliğini kullanamazsınız. Daha sonra, uygulamanızı üretime geçirdiğinizde bu yöntem, cihazdaki her SIM için bir sonuç döndürür.
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. Doğrulama akışını başlatma
Firebase PNV akışını başlatmak için getVerifiedPhoneNumber() yöntemini çağırın. Yöntem, kullanıcı rızası ekranını gösterdiğinden bir Activity iletin. Activity olmayan bir Context (ör. Application bağlamınız), ACTIVITY_CONTEXT_REQUIRED hata koduyla başarısız olur.
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.
}
getVerifiedPhoneNumber() yöntemi, aşağıdakiler de dahil olmak üzere telefon numarası doğrulama akışının tamamını gerçekleştirir:
- Telefon numarasını paylaşmak için kullanıcı rızası almak üzere Android Kimlik Bilgisi Yöneticisi'ni kullanma.
- İstek, Firebase PNV arka ucuna gönderiliyor.
- Cihazın doğrulanmış telefon numarasını içeren bir jeton döndürme (üretim uygulamasında faturalandırma bu aşamada gerçekleşir).
5. Hataları işleme
Bir Firebase PNV çağrısı başarısız olduğunda istisna FirebasePhoneNumberVerificationException olur. Bir sonraki adımda ne yapılacağına karar vermek için errorCode kullanın. Örneğin, kullanıcı izin vermediğinde SMS doğrulamasına geri dönün. Her hata kodu, ne zaman oluştuğu ve önerilen işlem için Android'de Firebase PNV hatalarını işleme başlıklı makaleyi inceleyin.
Sonraki adımlar
Bu sayfada, birleştirilmiş tek çağrılı API'yi kullanarak Firebase PNV ile nasıl entegrasyon yapılacağı açıklanmaktadır. Tek bir yöntemi çağırmak, kullanıcı rızası almaktan Firebase PNV arka ucuna gerekli ağ çağrılarını yapmaya kadar tüm Firebase PNV kullanıcı işlemleri akışını yönetir. Bu yöntemi kullanarak entegrasyon adımlarını tek bir yöntem çağrısına indirgemiş olursunuz.
Bu API çoğu geliştirici için önerilir. Ancak kitaplığın karşılamadığı özel gereksinimleriniz varsa özel bir akış uygulama hakkında bilgi edinmek için Firebase Phone Number Verification akışını özelleştirme sayfasını inceleyin.
Doğrulanmış telefon numarasını uygulama istemcisinin dışında kullanıyorsanız telefon numarasının kendisi yerine jetonu iletmeniz gerekir. Böylece, kullandığınızda bütünlüğünü doğrulayabilirsiniz. Firebase PNV jetonlarını doğrulama konusunu inceleyin.
Kullanıcıların doğrulanmış telefon numaralarıyla Firebase Authentication uygulamasında oturum açmalarını sağlamak için Firebase Phone Number Verification kullanarak Firebase ile kimlik doğrulama başlıklı makaleyi inceleyin.
Eksiksiz bir örnek uygulama oluşturan adım adım açıklamalı kılavuz için Firebase Phone Number Verification codelab'i deneyin.
Uygulamanızın Firebase PNV akışını ve arka uç entegrasyonunu uygulayıp test ettikten sonra, gerçek doğrulanmış telefon numaralarını almaya başlamak için uygulamanızı üretim aşamasına geçirebilirsiniz. Üretim moduna geçme başlıklı makaleyi inceleyin.
API'nin tamamı için Firebase PNV API referansına bakın.