SMS mesajı göndererek bir kullanıcının oturumunu açmak için Firebase Authentication kullanabilirsiniz kullanıcının telefonuna. Kullanıcı SMS mesajı.
Uygulamanıza telefon numarası ile oturum açma bilgisi eklemenin en kolay yolu FirebaseUI, telefon için oturum açma akışlarını uygulayan bir açılır oturum açma widget'ı içerir numarayla oturum açmanın yanı sıra şifre tabanlı ve birleşik oturum açma. Bu doküman , Firebase SDK'sını kullanarak telefon numarası oturum açma akışının nasıl uygulanacağını açıklar.
Başlamadan önce
- Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
-
Modül (uygulama düzeyinde) Gradle dosyanızda
(genellikle
<project>/<app-module>/build.gradle.kts
veya<project>/<app-module>/build.gradle
), Android için Firebase Authentication kitaplığına bağımlılığı ekleyin. Şunu kullanmanızı öneririz: Firebase Android BoM Kitaplık'ta sürüm oluşturmayı kontrol etmek içindependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.2.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
Firebase Android BoM kullanıldığında, Uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanacaktır.
(Alternatif) Firebase kitaplığı bağımlılıklarını kullanmadan BoM
Firebase BoM kullanmamayı seçerseniz her Firebase kitaplığı sürümünü belirtmeniz gerekir değerini alır.
Uygulamanızda birden çok Firebase kitaplığı kullanıyorsanız, kitaplık sürümlerini yönetmek için BoM kullanmanızı öneririz. Bu, tüm sürümlerin uyumlu olduğundan emin olun.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:23.0.0") }
- Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolunda bulabilirsiniz.
- Firebase konsolunda uygulamanızın SHA-1 karmasını henüz ayarlamadıysanız lütfen unutmayın. Bkz. Uygulamanızın SHA-1'ini bulmayla ilgili bilgi için İstemcinizin Kimlik Doğrulaması karma değerini oluşturur.
Güvenlikle ilgili sorunlar
Yalnızca telefon numarası kullanarak kimlik doğrulama, kolay olsa da daha az güvenlidir diğer mevcut yöntemlerden farklıdır. Çünkü bir telefon numarasına sahip olmak kullanıcılar arasında kolayca aktarılabilir. Ayrıca, birden fazla kullanıcısı olan cihazlarda SMS mesajı alabilen tüm kullanıcılar bir hesapta oturum açmak için cihazın telefon numarası.
Uygulamanızda telefon numarasına dayalı oturum açma özelliği kullanıyorsanız bunu sunmalısınız güvenli oturum açma yöntemlerine yer verir ve kullanıcıları, güvenliği olumlu sonuçlar doğurabilir.
Firebase projeniz için Telefon Numarasıyla oturum açmayı etkinleştirme
Kullanıcıların SMS ile oturum açmasını sağlamak için önce Telefon Numarası oturum açma özelliğini etkinleştirmeniz gerekir yöntemi belirleyin:
- Firebase konsolunda Kimlik Doğrulama bölümünü açın.
- Oturum Açma Yöntemi sayfasında Telefon Numarası'nı etkinleştirin oturum açma yöntemini kullanabilirsiniz.
Uygulama doğrulamayı etkinleştirme
Telefon numarası kimlik doğrulamasını kullanmak için Firebase'in bunu doğrulayabilmesi gerekir telefon numarası oturum açma istekleri uygulamanızdan geliyor. RACI matrisindeki Firebase Authentication bunu başarıyor:
- Play Integrity API: Kullanıcının cihazında Google Play services yüklüyse
ve Firebase Authentication aşağıdaki bilgilerle cihazın meşru olduğunu doğrulayabilir:
Play Integrity API,
telefon numarasıyla oturum açma işlemine devam edebilirsiniz. Play Integrity API, Google'a ait bir projede şu kullanıcı tarafından etkinleştirildi:
Firebase Authentication, projenizde yok. Bu, Play Integrity API'ye katkıda bulunmaz
. Play Integrity Desteği,
Authentication SDK'sı v21.2.0+
(Firebase BoM sürüm 31.4.0 ve sonraki sürümler).
Play Integrity'yi kullanmak için uygulamanızın SHA-256 parmak izini henüz belirtmediyseniz şuradan Proje ayarlarını Firebase değiştirebilirsiniz. Referans İstemci bölümüne göz atın.
- reCAPTCHA doğrulaması: Play Integrity'nin kullanılamaması durumunda
Örneğin, kullanıcının Google Play services yüklü olmayan bir cihazı olduğunda, Firebase Authentication
Telefonda oturum açma akışını tamamlamak için reCAPTCHA doğrulaması kullanır. reCAPTCHA sorgulaması
çoğu zaman kullanıcının hiçbir şey çözmesine gerek kalmadan tamamlanır. Bu akışın Google Analytics 4'te
Uygulamanızla bir SHA-1 ilişkilendirilmiştir. Bu akış için API Anahtarınızın da
PROJECT_ID.firebaseapp.com
için kısıtlanmamış veya izin verilenler listesine eklenmiş.reCAPTCHA'nın tetiklendiği bazı senaryolar:
- Son kullanıcının cihazında Google Play services yüklü değilse.
- Uygulama Google Play Store aracılığıyla dağıtılmıyorsa (Authentication SDK 21.2.0+ sürümünde).
- Elde edilen SafetyNet jetonu geçerli değilse (Authentication SDK'sının 21.2.0'dan küçük sürümlerinde).
Uygulama doğrulama için SafetyNet veya Play Integrity kullanıldığında SMS şablonundaki
ziyaret edin.%APP_NAME%
alanı Google Play Store üzerinden belirlenen uygulama adıyla doldurulur. reCAPTCHA'nın tetiklendiği senaryolarda%APP_NAME%
,PROJECT_ID.firebaseapp.com
olarak doldurulur.
forceRecaptchaFlowForTesting
Uygulama doğrulama özelliğini (kurmaca telefon numaraları kullanırken) şu adreslerle devre dışı bırakabilirsiniz:
setAppVerificationDisabledForTesting
.
Sorun giderme
"Başlangıç durumu eksik" uygulama doğrulama için reCAPTCHA kullanılırken hata oluştu
Bu durum, reCAPTCHA akışı başarıyla tamamlandığında ancak kullanıcıyı tekrar yerel uygulamaya yönlendirmediğinde ortaya çıkabilir. Bu durumda kullanıcı yedek URL'ye (
PROJECT_ID.firebaseapp.com/__/auth/handler
) yönlendirilir. Firefox tarayıcılarda yerel uygulama bağlantılarının açılması varsayılan olarak devre dışıdır. Firefox'ta yukarıdaki hatayı görürseniz uygulama bağlantılarını açmayı etkinleştirmek için Android için Firefox'u yerel uygulamalarda bağlantıları açacak şekilde ayarlama bölümündeki adımları uygulayın.
Kullanıcının telefonuna doğrulama kodu gönderme
Telefon numarasıyla oturum açmayı başlatmak için kullanıcıya şunu isteyen bir arayüz sunun: telefon numarasını yazmalarını istiyor. Yasal şartlar değişiklik gösterse de en iyi uygulama olarak ve kullanıcılarınızın beklentilerini belirlemek amacıyla, kullandıkları cihazlarda doğrulama ve standart kullanım için bir SMS mesajı alabilirler. uygulanır.
Sonra da kendi telefon numarasını
Firebase'i istemenin PhoneAuthProvider.verifyPhoneNumber
yöntemi
Kullanıcının telefon numarasını doğrulayın. Örneğin:
Kotlin+KTX
val options = PhoneAuthOptions.newBuilder(auth) .setPhoneNumber(phoneNumber) // Phone number to verify .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit .setActivity(this) // Activity (for callback binding) .setCallbacks(callbacks) // OnVerificationStateChangedCallbacks .build() PhoneAuthProvider.verifyPhoneNumber(options)
Java
PhoneAuthOptions options = PhoneAuthOptions.newBuilder(mAuth) .setPhoneNumber(phoneNumber) // Phone number to verify .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit .setActivity(this) // (optional) Activity for callback binding // If no activity is passed, reCAPTCHA verification can not be used. .setCallbacks(mCallbacks) // OnVerificationStateChangedCallbacks .build(); PhoneAuthProvider.verifyPhoneNumber(options);
verifyPhoneNumber
yöntemi reentrant: yöntemi çağırırsanız
Bir etkinliğin onStart
yönteminde olduğu gibi
verifyPhoneNumber
yöntemi,
orijinal istek zaman aşımına uğradı.
Hesabınız yoksa telefon numarasıyla oturum açma işlemine devam etmek için bu davranışı kullanabilirsiniz.
Uygulama, kullanıcı oturum açmadan önce kapanır (örneğin, kullanıcı
. verifyPhoneNumber
adlı kişiyi çağırdıktan sonra, şu özelliklere sahip bir bayrak ayarlayın:
doğrulamanın devam ettiğini belirtir. Ardından, bayrağı Etkinlik sayfanıza kaydedin
onSaveInstanceState
yöntemini çağırın ve işareti
onRestoreInstanceState
. Son olarak,
onStart
yöntemini kullanıyorsanız doğrulamanın devam edip etmediğini kontrol edin ve
Bu durumda, verifyPhoneNumber
numaralı telefonu tekrar arayın. Şu durumlarda işareti temizlediğinizden emin olun:
doğrulama tamamlandığında veya başarısız olduğunda (bkz.
Doğrulama geri aramaları).
Ekran döndürme ve Etkinlik yeniden başlatma işlemlerinin diğer örneklerini kolayca ele almak için
Etkinliğinizi verifyPhoneNumber
yöntemine iletin. Geri çağırma işlevleri
Etkinlik durduğunda otomatik olarak ayrılır, böylece kullanıcı arayüzünü rahatça yazabilirsiniz
geçiş kodunu kullanabilirsiniz.
Firebase tarafından gönderilen SMS mesajı da
Yetkilendirme belgenizde setLanguageCode
yöntemiyle kimlik doğrulama dili
örneğidir.
Kotlin+KTX
auth.setLanguageCode("fr") // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage()
Java
auth.setLanguageCode("fr"); // To apply the default app language instead of explicitly setting it. // auth.useAppLanguage();
PhoneAuthProvider.verifyPhoneNumber
adlı kişiyi aradığınızda, şunları da yapmalısınız:
OnVerificationStateChangedCallbacks
örneği sağlar.
şunun sonuçlarını işleyen geri çağırma işlevlerinin uygulamalarını içerir:
talep ediyor. Örneğin:
Kotlin+KTX
callbacks = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() { override fun onVerificationCompleted(credential: PhoneAuthCredential) { // This callback will be invoked in two situations: // 1 - Instant verification. In some cases the phone number can be instantly // verified without needing to send or enter a verification code. // 2 - Auto-retrieval. On some devices Google Play services can automatically // detect the incoming verification SMS and perform verification without // user action. Log.d(TAG, "onVerificationCompleted:$credential") signInWithPhoneAuthCredential(credential) } override fun onVerificationFailed(e: FirebaseException) { // This callback is invoked in an invalid request for verification is made, // for instance if the the phone number format is not valid. Log.w(TAG, "onVerificationFailed", e) if (e is FirebaseAuthInvalidCredentialsException) { // Invalid request } else if (e is FirebaseTooManyRequestsException) { // The SMS quota for the project has been exceeded } else if (e is FirebaseAuthMissingActivityForRecaptchaException) { // reCAPTCHA verification attempted with null Activity } // Show a message and update the UI } override fun onCodeSent( verificationId: String, token: PhoneAuthProvider.ForceResendingToken, ) { // The SMS verification code has been sent to the provided phone number, we // now need to ask the user to enter the code and then construct a credential // by combining the code with a verification ID. Log.d(TAG, "onCodeSent:$verificationId") // Save verification ID and resending token so we can use them later storedVerificationId = verificationId resendToken = token } }
Java
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onVerificationCompleted(@NonNull PhoneAuthCredential credential) { // This callback will be invoked in two situations: // 1 - Instant verification. In some cases the phone number can be instantly // verified without needing to send or enter a verification code. // 2 - Auto-retrieval. On some devices Google Play services can automatically // detect the incoming verification SMS and perform verification without // user action. Log.d(TAG, "onVerificationCompleted:" + credential); signInWithPhoneAuthCredential(credential); } @Override public void onVerificationFailed(@NonNull FirebaseException e) { // This callback is invoked in an invalid request for verification is made, // for instance if the the phone number format is not valid. Log.w(TAG, "onVerificationFailed", e); if (e instanceof FirebaseAuthInvalidCredentialsException) { // Invalid request } else if (e instanceof FirebaseTooManyRequestsException) { // The SMS quota for the project has been exceeded } else if (e instanceof FirebaseAuthMissingActivityForRecaptchaException) { // reCAPTCHA verification attempted with null Activity } // Show a message and update the UI } @Override public void onCodeSent(@NonNull String verificationId, @NonNull PhoneAuthProvider.ForceResendingToken token) { // The SMS verification code has been sent to the provided phone number, we // now need to ask the user to enter the code and then construct a credential // by combining the code with a verification ID. Log.d(TAG, "onCodeSent:" + verificationId); // Save verification ID and resending token so we can use them later mVerificationId = verificationId; mResendToken = token; } };
Doğrulama geri aramaları
Çoğu uygulamada onVerificationCompleted
,
onVerificationFailed
ve onCodeSent
geri arama. Siz
bağlı olarak onCodeAutoRetrievalTimeOut
uygulamasını da uygulayabilir
ve istenen şartları karşılayıp karşılamadığını kontrol edin.
onDoğrulamaTamamlandı(PhoneAuthCredential)
Bu yöntem iki durumda çağrılır:
- Anında doğrulama: Bazı durumlarda telefon numarası anında doğrulama kodu göndermenize veya girmenize gerek kalmadan doğrulanır.
- Otomatik alma: Bazı cihazlarda Google Play Hizmetleri şunları yapabilir: gelen doğrulama SMS'ini otomatik olarak algıla ve gerçekleştir kullanıcı işlemi olmadan doğrulama. (Bu özellik kullanılamayabilir birlikte çalışır.) Bu, SMS Retriever API: SMS mesajının sonuna 11 karakterlik bir karma değeri ekler.
PhoneAuthCredential
kullanıcının oturum açmak için geri çağırması gerekir.
onDoğrulamaFailed(FirebaseException)
Bu yöntem, geçersiz bir doğrulama isteğine yanıt olarak çağrılır: geçersiz bir telefon numarası veya doğrulama kodu belirten bir istek olarak değiştirebilir.
onCodeSent(Dize doğrulamakimliği, PhoneAuthProvider.ForceResendingToken)
İsteğe bağlı. Bu yöntem, doğrulama kodu gönderildikten sonra çağrılır verilen telefon numarasına SMS ile gönder.
Bu yöntem çağrıldığında çoğu uygulama, kullanıcının isteğine bağlı olarak
SMS mesajındaki doğrulama kodunu yazın. (Aynı anda
arka planda devam ediyor olabilir.) Ardından, kullanıcının
doğrulama kodunu yazar, doğrulama kodunu ve
oluşturmak için yönteme aktarılan doğrulama kimliğini
Oturum açmak için de kullanabileceğiniz PhoneAuthCredential
nesne
temsil eder. Ancak bazı uygulamalar
onCodeAutoRetrievalTimeOut
, görüntülemeden önce çağrılır
doğrulama kodu kullanıcı arayüzü (önerilmez).
onCodeAutoRetrievalTimeOut(Dize doğrulamasıkimliği)
İsteğe bağlı. Bu yöntem,
verifyPhoneNumber
şu etkinliği kullanmadan geçti:
İlk olarak onVerificationCompleted
tetikleniyor. SIM'i olmayan cihazlarda
SMS otomatik alma özelliği etkin olmadığı için bu yöntem hemen çağrılır.
yapmasını sağlar.
Bazı uygulamalar, otomatik doğrulama süresi zaman aşımına uğrayana kadar kullanıcı girişini engeller. Ardından, kullanıcıdan doğrulama kodunu girmesini isteyen bir kullanıcı arayüzü görüntüler. SMS mesajından (önerilmez).
PhoneAuthCredential nesnesi oluşturma
Kullanıcı Firebase'in kullanıcıya gönderdiği doğrulama kodunu girdikten sonra
doğrulama işlemini kullanarak bir PhoneAuthCredential
nesnesi oluşturun
onCodeSent
veya
onCodeAutoRetrievalTimeOut
geri arama. (Zaman
onVerificationCompleted
adlı kişiye telefon edilir.
PhoneAuthCredential
nesnesini doğrudan kapsayacağınız için bu adımı atlayabilirsiniz.)
PhoneAuthCredential
nesnesini oluşturmak için şunu çağırın:
PhoneAuthProvider.getCredential
:
Kotlin+KTX
val credential = PhoneAuthProvider.getCredential(verificationId!!, code)
Java
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
Kullanıcının oturumu açın
PhoneAuthCredential
nesnesini aldıktan sonra,
onVerificationCompleted
geri arama veya telefonla arama
PhoneAuthProvider.getCredential
, oturum açma akışını şu tarihe kadar tamamlayın:
PhoneAuthCredential
nesnesini
FirebaseAuth.signInWithCredential
:
Kotlin+KTX
private fun signInWithPhoneAuthCredential(credential: PhoneAuthCredential) { auth.signInWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success") val user = task.result?.user } else { // Sign in failed, display a message and update the UI Log.w(TAG, "signInWithCredential:failure", task.exception) if (task.exception is FirebaseAuthInvalidCredentialsException) { // The verification code entered was invalid } // Update UI } } }
Java
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success"); FirebaseUser user = task.getResult().getUser(); // Update UI } else { // Sign in failed, display a message and update the UI Log.w(TAG, "signInWithCredential:failure", task.getException()); if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) { // The verification code entered was invalid } } } }); }
Hayali telefon numaralarıyla test etme
Firebase konsolu üzerinden geliştirme için kurgusal telefon numaraları ayarlayabilirsiniz. Hayali telefonla test etme sayılar şu faydaları sağlar:
- Kullanım kotanızı tüketmeden telefon numarası kimlik doğrulamasını test edin.
- Gerçek bir SMS mesajı göndermeden telefon numarası kimlik doğrulamasını test edin.
- Kısıtlamadan, aynı telefon numarasıyla art arda testler yapın. Bu Uygulama mağazası inceleme sürecinde en az test için aynı telefon numarasını kullanın.
- Örneğin, Google Play Hizmetleri olmadan iOS simülatöründe veya Android emülatöründe geliştirme yeteneği.
- Entegrasyon testlerini, normalde uygulanan güvenlik kontrolleri tarafından engellenmeden yaz gerçek telefon numaraları için kullandığı bir teknolojidir.
Hayali telefon numaraları aşağıdaki şartları karşılamalıdır:
- Gerçekten hayali olan ve daha önce var olmayan telefon numaraları kullandığınızdan emin olun. Firebase Authentication, gerçek kullanıcılar tarafından kullanılan mevcut telefon numaralarını test numarası olarak ayarlamanıza izin vermez. Seçeneklerden biri, ABD test telefon numaraları olarak 555 önekli numarayı kullanmaktır. Örneğin: +1 650-555-3434
- Telefon numaralarının uzunlukları ve diğer özellikleri kısıtlar. Yine de gerçek bir kullanıcının telefon numarasıyla aynı doğrulamadan geçerler.
- Geliştirme için en fazla 10 telefon numarası ekleyebilirsiniz.
- Tahmin edilmesi ve değiştirilmesi zor test telefon numaraları/kodları kullanın yapmanızı öneririm.
Hayali telefon numaraları ve doğrulama kodları oluşturma
- Firebase konsolunda şunu açın: Kimlik Doğrulama bölümüne bakın.
- Henüz yapmadıysanız Oturum açma yöntemi sekmesinde Telefon sağlayıcısını etkinleştirin.
- Test için telefon numaraları akordeon menüsünü açın.
- Test etmek istediğiniz telefon numarasını belirtin. Örneğin: +1 650-555-3434.
- Bu numara için 6 haneli doğrulama kodunu girin. Örneğin: 654321.
- Numarayı ekleyin. Gerekirse telefon numarasını silebilir ve fareyle ilgili satırın üzerine gelip çöp kutusu simgesini tıklayarak kodu.
Manuel test
Uygulamanızda hayali bir telefon numarasını doğrudan kullanmaya başlayabilirsiniz. Bu şekilde şunları yapabilirsiniz: Geliştirme aşamalarında kota sorunları veya kısıtlamayla karşılaşmadan manuel testler gerçekleştirme. Google Play Hizmetleri olmadan doğrudan bir iOS simülatöründen veya Android emülatöründen de test edebilirsiniz yüklendi.
Hayali telefon numarasını girip doğrulama kodunu gönderdiğinizde, gönderilir. Bunun yerine, imza işlemini tamamlamak için önceden yapılandırılmış doğrulama kodunu sağlamanız gerekir inç
Oturum açma işlemi tamamlandığında, bu telefon numarasıyla bir Firebase kullanıcısı oluşturulur. İlgili içeriği oluşturmak için kullanılan kullanıcı, gerçek bir telefon numarası kullanıcısıyla aynı davranışa ve özelliklere sahiptir; ve kullanıcı, Realtime Database/Cloud Firestore ve diğer hizmetlerde aynı şekilde çalışır. sırasında basılan kimlik jetonu bu işlem gerçek bir telefon numarası kullanıcısıyla aynı imzaya sahiptir.
Diğer bir seçenek de, özel hak taleplerine ilişkin ve erişim.
Test için reCAPTCHA akışını manuel olarak tetiklemek istiyorsanız
forceRecaptchaFlowForTesting()
yöntemini çağırın.
// Force reCAPTCHA flow FirebaseAuth.getInstance().getFirebaseAuthSettings().forceRecaptchaFlowForTesting();
Entegrasyon testi
Firebase Authentication, manuel teste ek olarak entegrasyon testleri yazmaya yardımcı olan API'ler de sağlar. telefon kimlik doğrulama testi için. Bu API'ler reCAPTCHA'yı devre dışı bırakarak uygulama doğrulamayı devre dışı bırakır. ve iOS'teki sessiz push bildirimlerinde kullanabilirsiniz. Bu sayede otomasyon testleri yapabilir ve uygulanması daha kolay olur. Ayrıca, anlık görüntü testi veya doğrulama akışı da mevcut.
Android'de şu saatten önce setAppVerificationDisabledForTesting()
adlı kişiyi arayın:
signInWithPhoneNumber
sesli arama. Bu durumda uygulama doğrulama otomatik olarak devre dışı bırakılır.
telefon numarasını manuel olarak çözmeden iletmenize olanak tanıyor. Her ne kadar
Play Integrity ve reCAPTCHA devre dışıdır. Gerçek telefon numarası kullanıldığında da
oturum açma işlemini tamamlayın. Bu API ile yalnızca hayali telefon numaraları kullanılabilir.
// Turn off phone auth app verification. FirebaseAuth.getInstance().getFirebaseAuthSettings() .setAppVerificationDisabledForTesting();
verifyPhoneNumber
adlı işletmeye hayali bir numarayla çağrı yapmak şu işlemi tetikler:
onCodeSent
geri arama. Bu adımda ilgili doğrulamayı sağlamanız gerekir
girin. Bu, Android Emülatörlerde test yapılmasına olanak tanır.
Java
String phoneNum = "+16505554567"; String testVerificationCode = "123456"; // Whenever verification is triggered with the whitelisted number, // provided it is not set for auto-retrieval, onCodeSent will be triggered. FirebaseAuth auth = FirebaseAuth.getInstance(); PhoneAuthOptions options = PhoneAuthOptions.newBuilder(auth) .setPhoneNumber(phoneNum) .setTimeout(60L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(@NonNull String verificationId, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) { // Save the verification id somewhere // ... // The corresponding whitelisted code above should be used to complete sign-in. MainActivity.this.enableUserManuallyInputCode(); } @Override public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) { // Sign in with the credential // ... } @Override public void onVerificationFailed(@NonNull FirebaseException e) { // ... } }) .build(); PhoneAuthProvider.verifyPhoneNumber(options);
Kotlin+KTX
val phoneNum = "+16505554567" val testVerificationCode = "123456" // Whenever verification is triggered with the whitelisted number, // provided it is not set for auto-retrieval, onCodeSent will be triggered. val options = PhoneAuthOptions.newBuilder(Firebase.auth) .setPhoneNumber(phoneNum) .setTimeout(30L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() { override fun onCodeSent( verificationId: String, forceResendingToken: PhoneAuthProvider.ForceResendingToken, ) { // Save the verification id somewhere // ... // The corresponding whitelisted code above should be used to complete sign-in. this@MainActivity.enableUserManuallyInputCode() } override fun onVerificationCompleted(phoneAuthCredential: PhoneAuthCredential) { // Sign in with the credential // ... } override fun onVerificationFailed(e: FirebaseException) { // ... } }) .build() PhoneAuthProvider.verifyPhoneNumber(options)
Ayrıca, Android'de otomatik alma akışlarını test etmek için kurgusal sayıyı ve
numaralı telefonu arayarak otomatik alma için ilgili doğrulama kodunun
setAutoRetrievedSmsCodeForPhoneNumber
verifyPhoneNumber
şu olduğunda:
çağrıldığında, PhoneAuthCredential
ile onVerificationCompleted
tetikler.
doğrudan ekleyebilirsiniz. Bu özellik yalnızca kurgusal telefon numaraları için kullanılabilir.
Bunun devre dışı bırakıldığından ve hayali telefon numaralarının gömülü olarak kodlanmadığından emin olun. uygulamanızı Google Play Store'da yayınlarken.
Java
// The test phone number and code should be whitelisted in the console. String phoneNumber = "+16505554567"; String smsCode = "123456"; FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(); FirebaseAuthSettings firebaseAuthSettings = firebaseAuth.getFirebaseAuthSettings(); // Configure faking the auto-retrieval with the whitelisted numbers. firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode); PhoneAuthOptions options = PhoneAuthOptions.newBuilder(firebaseAuth) .setPhoneNumber(phoneNumber) .setTimeout(60L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onVerificationCompleted(@NonNull PhoneAuthCredential credential) { // Instant verification is applied and a credential is directly returned. // ... } // ... }) .build(); PhoneAuthProvider.verifyPhoneNumber(options);
Kotlin+KTX
// The test phone number and code should be whitelisted in the console. val phoneNumber = "+16505554567" val smsCode = "123456" val firebaseAuth = Firebase.auth val firebaseAuthSettings = firebaseAuth.firebaseAuthSettings // Configure faking the auto-retrieval with the whitelisted numbers. firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode) val options = PhoneAuthOptions.newBuilder(firebaseAuth) .setPhoneNumber(phoneNumber) .setTimeout(60L, TimeUnit.SECONDS) .setActivity(this) .setCallbacks(object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() { override fun onVerificationCompleted(credential: PhoneAuthCredential) { // Instant verification is applied and a credential is directly returned. // ... } // ... }) .build() PhoneAuthProvider.verifyPhoneNumber(options)
Sonraki adımlar
Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve bilgileri (kullanıcı adı ve şifre, telefon numarası) Numara veya kimlik doğrulama sağlayıcı bilgileri (oturum açan kullanıcı). Bu yeni Firebase projenizin bir parçası olarak saklanır ve aşağıdaki verileri tanımlamak için kullanılabilir: nasıl oturum açarsa açsın, projenizdeki tüm uygulamalarda kullanılır.
-
Uygulamalarınızda, kullanıcıların temel profil bilgilerini şuradan alabilirsiniz:
FirebaseUser
nesnesini ifade eder. Bkz. Kullanıcıları Yönet. Firebase Realtime Database ve Cloud Storage içinde Güvenlik Kuralları'nı kullanarak şunları yapabilirsiniz:
auth
değişkeninden, oturum açmış kullanıcının benzersiz kullanıcı kimliğini alabilirsiniz. ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanılır.
Kullanıcıların çoklu kimlik doğrulama kullanarak uygulamanızda oturum açmasına izin verebilirsiniz yetkilendirme sağlayıcısının kimlik bilgilerini hesaba katılmaz.
Bir kullanıcının oturumunu kapatmak için numaralı telefonu arayın
signOut
:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();