
FirebaseUI, Firebase Authentication SDK'sının üzerine inşa edilmiş bir kitaplıktır ve uygulamanızda kullanılmak üzere hazır kullanıcı arayüzü akışları sağlar. FirebaseUI aşağıdaki avantajları sunar:
- Birden fazla sağlayıcı: E-posta/şifre, e-posta bağlantısı, telefon kimlik doğrulaması, Google ile oturum açma, Facebook ile giriş, Twitter ile giriş ve GitHub ile giriş için oturum açma akışları.
- Hesap yönetimi: Hesap oluşturma ve şifre sıfırlama gibi hesap yönetimi görevlerini ele alan akışlar.
- Hesap Bağlama: Kimlik sağlayıcılar arasında kullanıcı hesaplarını güvenli bir şekilde bağlama akışları.
- Anonim Kullanıcı Yükseltme: Anonim kullanıcıları güvenli bir şekilde yükseltme akışları.
- Özel Temalar: FirebaseUI'ın görünümünü uygulamanıza uyacak şekilde özelleştirin. Ayrıca, FirebaseUI açık kaynaklı olduğundan projeyi çatallayıp tam olarak ihtiyaçlarınıza göre özelleştirebilirsiniz.
- Kimlik Bilgisi Yöneticisi: Cihazlar arası hızlı oturum açma için Kimlik Bilgisi Yöneticisi ile otomatik entegrasyon.
Başlamadan önce
Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
FirebaseUI bağımlılıklarını uygulama düzeyindeki
build.gradle(.kts)dosyanıza ekleyin. Facebook veya Twitter ile oturum açmayı desteklemek istiyorsanız Facebook ve Twitter SDK'larını da ekleyin:dependencies { // ... implementation("com.firebaseui:firebase-ui-auth:9.0.0") // Required only if Facebook login support is required // Find the latest Facebook SDK releases here: https://goo.gl/Ce5L94 implementation("com.facebook.android:facebook-android-sdk:8.x") }FirebaseUI Auth SDK'sının Firebase SDK ve Google Play Hizmetleri SDK'sı üzerinde geçişli bağımlılıkları vardır.
Firebase konsolunda Güvenlik > Kimlik doğrulama'ya gidin.
Oturum açma yöntemi sekmesinde, desteklemek istediğiniz oturum açma sağlayıcılarını etkinleştirin. Bazı oturum açma sağlayıcılar ek bilgi gerektirir. Bu bilgiler genellikle hizmetin geliştirici konsolunda bulunur.
Google ile Oturum Açma'yı etkinleştirdiyseniz:
Firebase yapılandırma dosyanızı güncelleyin.
Firebase konsolunda istendiğinde, Google ile oturum açma için gereken OAuth istemci bilgilerini içeren güncellenmiş Firebase yapılandırma dosyasını (
google-services.json) indirin.Bu güncellenmiş yapılandırma dosyasını Android Studio projenize taşıyın ve artık güncel olmayan ilgili yapılandırma dosyasının yerine koyun. (Bkz. Firebase'i Android projenize ekleme.)
Henüz yapmadıysanız uygulamanızın SHA-1 parmak izini belirtin.
Firebase konsolunda
Ayarlar > Genel sekmesine gidin.Uygulamalarınız kartına gidin, Android uygulamanızı seçin ve SHA sertifikası parmak izleri alanına SHA-1 parmak izinizi ekleyin.
Uygulamanızın SHA parmak izini alma hakkında ayrıntılı bilgi için İstemcinizin Kimliğini Doğrulama başlıklı makaleyi inceleyin.
Facebook veya Twitter ile oturum açmayı destekliyorsanız
strings.xml'ya her sağlayıcı tarafından istenen kişisel verileri belirten dize kaynakları ekleyin:<resources> <!-- Facebook application ID and custom URL scheme (app ID prefixed by 'fb'). --> <string name="facebook_application_id" translatable="false">YOUR_APP_ID</string> <string name="facebook_login_protocol_scheme" translatable="false">fbYOUR_APP_ID</string> </resources>
Oturum aç
FirebaseUI
Activity sonuç sözleşmesi için geri çağırma kaydeden bir ActivityResultLauncher oluşturun:
Kotlin
// See: https://developer.android.com/training/basics/intents/result private val signInLauncher = registerForActivityResult( FirebaseAuthUIActivityResultContract(), ) { res -> this.onSignInResult(res) }
Java
// See: https://developer.android.com/training/basics/intents/result private final ActivityResultLauncher<Intent> signInLauncher = registerForActivityResult( new FirebaseAuthUIActivityResultContract(), new ActivityResultCallback<FirebaseAuthUIAuthenticationResult>() { @Override public void onActivityResult(FirebaseAuthUIAuthenticationResult result) { onSignInResult(result); } } );
FirebaseUI oturum açma akışını başlatmak için tercih ettiğiniz oturum açma yöntemleriyle bir oturum açma amaçlı isteği oluşturun:
Kotlin
// Choose authentication providers val providers = arrayListOf( AuthUI.IdpConfig.EmailBuilder().build(), AuthUI.IdpConfig.PhoneBuilder().build(), AuthUI.IdpConfig.GoogleBuilder().build(), AuthUI.IdpConfig.FacebookBuilder().build(), AuthUI.IdpConfig.TwitterBuilder().build(), ) // Create and launch sign-in intent val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build() signInLauncher.launch(signInIntent)
Java
// Choose authentication providers List<AuthUI.IdpConfig> providers = Arrays.asList( new AuthUI.IdpConfig.EmailBuilder().build(), new AuthUI.IdpConfig.PhoneBuilder().build(), new AuthUI.IdpConfig.GoogleBuilder().build(), new AuthUI.IdpConfig.FacebookBuilder().build(), new AuthUI.IdpConfig.TwitterBuilder().build()); // Create and launch sign-in intent Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build(); signInLauncher.launch(signInIntent);
Oturum açma akışı tamamlandığında sonucu onSignInResult bölümünde görürsünüz:
Kotlin
private fun onSignInResult(result: FirebaseAuthUIAuthenticationResult) { val response = result.idpResponse if (result.resultCode == RESULT_OK) { // Successfully signed in val user = FirebaseAuth.getInstance().currentUser // ... } else { // Sign in failed. If response is null the user canceled the // sign-in flow using the back button. Otherwise check // response.getError().getErrorCode() and handle the error. // ... } }
Java
private void onSignInResult(FirebaseAuthUIAuthenticationResult result) { IdpResponse response = result.getIdpResponse(); if (result.getResultCode() == RESULT_OK) { // Successfully signed in FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); // ... } else { // Sign in failed. If response is null the user canceled the // sign-in flow using the back button. Otherwise check // response.getError().getErrorCode() and handle the error. // ... } }
Oturum açma yöntemlerini ayarlama
E-posta bağlantısı kimlik doğrulaması
Firebase konsolunda Güvenlik > Kimlik doğrulama'ya gidin.
Oturum açma yöntemi sekmesinde E-posta/Şifre oturum açma yöntemini etkinleştirin. E-posta bağlantısı ile oturum açma özelliğini kullanmak için e-posta/şifre ile oturum açma özelliğinin etkinleştirilmesi gerektiğini unutmayın.
Aynı bölümde E-posta bağlantısı (şifresiz oturum açma) oturum açma yöntemini etkinleştirin ve Kaydet'i tıklayın.
E-posta bağlantısı ile oturum açma özelliğini kullanmak için Firebase Dynamic Links seçeneğini de etkinleştirmeniz gerekir:
Firebase Console'da DevOps & Engagement (DevOps ve Etkileşim) > Dynamic Links'e (Dinamik Bağlantılar) gidin.
Başlayın'ı tıklayın ve bir alan adı ekleyin. Burada seçtiğiniz alan, kullanıcılarınıza gönderilen e-posta bağlantılarına yansıtılır.
FirebaseUI'da e-posta bağlantısıyla oturum açmayı, bir
EmailBuilderörneğindeenableEmailLinkSignInişlevini çağırarak etkinleştirebilirsiniz. Ayrıca,setHandleCodeInAppdeğeri true olarak ayarlanmış geçerli birActionCodeSettingsnesnesi de sağlamanız gerekir.Ayrıca,
setUrlparametresine ilettiğiniz URL'yi beyaz listeye eklemeniz gerekir:Firebase konsolunda Güvenlik > Kimlik doğrulama > Ayarlar sekmesine gidin.
Yetkili alanlar bölümünde Alan ekle'yi tıklayın ve alanınızı ekleyin.
Kotlin
val actionCodeSettings = ActionCodeSettings.newBuilder() .setAndroidPackageName( // yourPackageName= "...", // installIfNotAvailable= true, // minimumVersion= null, ) .setHandleCodeInApp(true) // This must be set to true .setUrl("https://google.com") // This URL needs to be whitelisted .build() val providers = listOf( EmailBuilder() .enableEmailLinkSignIn() .setActionCodeSettings(actionCodeSettings) .build(), ) val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build() signInLauncher.launch(signInIntent)
Java
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder() .setAndroidPackageName( /* yourPackageName= */ "...", /* installIfNotAvailable= */ true, /* minimumVersion= */ null) .setHandleCodeInApp(true) // This must be set to true .setUrl("https://google.com") // This URL needs to be whitelisted .build(); List<AuthUI.IdpConfig> providers = Arrays.asList( new AuthUI.IdpConfig.EmailBuilder() .enableEmailLinkSignIn() .setActionCodeSettings(actionCodeSettings) .build() ); Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build(); signInLauncher.launch(signInIntent);
Bağlantıyı belirli bir etkinlikte yakalamak istiyorsanız lütfen burada belirtilen adımları uygulayın. Aksi takdirde, bağlantı başlatıcı etkinliğinize yönlendirir.
Derin bağlantıyı yakaladıktan sonra, sizin için işleyebileceğimizi doğrulamak üzere verify işlevini çağırmanız gerekir. Bu durumda,
setEmailLinküzerinden bize iletmeniz gerekir.Kotlin
if (AuthUI.canHandleIntent(intent)) { val extras = intent.extras ?: return val link = extras.getString("email_link_sign_in") if (link != null) { val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setEmailLink(link) .setAvailableProviders(providers) .build() signInLauncher.launch(signInIntent) } }
Java
if (AuthUI.canHandleIntent(getIntent())) { if (getIntent().getExtras() == null) { return; } String link = getIntent().getExtras().getString("email_link_sign_in"); if (link != null) { Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setEmailLink(link) .setAvailableProviders(providers) .build(); signInLauncher.launch(signInIntent); } }
İsteğe bağlı olarak cihazlar arası e-posta bağlantısı ile oturum açma desteklenir. Bu sayede, Android uygulamanız üzerinden gönderilen bağlantı, web veya Apple uygulamalarınızda oturum açmak için kullanılabilir. Cihazlar arası destek varsayılan olarak etkindir.
EmailBuilderörneğindesetForceSameDeviceişlevini çağırarak devre dışı bırakabilirsiniz.Daha fazla bilgi için FirebaseUI-Web ve FirebaseUI-iOS'e bakın.
Oturumu Kapatın
FirebaseUI, Firebase Authentication'dan ve tüm sosyal kimlik sağlayıcılarından oturumu kapatmak için kolaylık sağlayan yöntemler sunar:
Kotlin
AuthUI.getInstance() .signOut(this) .addOnCompleteListener { // ... }
Java
AuthUI.getInstance() .signOut(this) .addOnCompleteListener(new OnCompleteListener<Void>() { public void onComplete(@NonNull Task<Void> task) { // ... } });
Kullanıcının hesabını tamamen de silebilirsiniz:
Kotlin
AuthUI.getInstance() .delete(this) .addOnCompleteListener { // ... }
Java
AuthUI.getInstance() .delete(this) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { // ... } });
Özelleştirme
FirebaseUI, temalandırma için varsayılan olarak AppCompat'i kullanır. Bu nedenle, uygulamanızın renk şemasını doğal olarak benimser. Daha fazla özelleştirme yapmanız gerekirse oturum açma Intent oluşturucusuna bir tema ve logo iletebilirsiniz:
Kotlin
val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setLogo(R.drawable.my_great_logo) // Set logo drawable .setTheme(R.style.MySuperAppTheme) // Set theme .build() signInLauncher.launch(signInIntent)
Java
Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setLogo(R.drawable.my_great_logo) // Set logo drawable .setTheme(R.style.MySuperAppTheme) // Set theme .build(); signInLauncher.launch(signInIntent);
Ayrıca özel bir gizlilik politikası ve hizmet şartları da belirleyebilirsiniz:
Kotlin
val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setTosAndPrivacyPolicyUrls( "https://example.com/terms.html", "https://example.com/privacy.html", ) .build() signInLauncher.launch(signInIntent)
Java
Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setTosAndPrivacyPolicyUrls( "https://example.com/terms.html", "https://example.com/privacy.html") .build(); signInLauncher.launch(signInIntent);
Sonraki adımlar
- FirebaseUI'yı kullanma ve özelleştirme hakkında daha fazla bilgi için GitHub'daki README dosyasına bakın.
- FirebaseUI'da bir sorun bulursanız ve bunu bildirmek isterseniz GitHub sorun izleyiciyi kullanın.