Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

FirebaseUI ile Android uygulamanıza kolayca oturum açın

FirebaseUI , uygulamanızda kullanılmak üzere drop-in UI akışları sağlayan Firebase Authentication SDK üzerine oluşturulmuş bir kitaplıktır. FirebaseUI aşağıdaki avantajları sağlar:

  • Birden Çok Sağlayıcı - e-posta / şifre, e-posta bağlantısı, telefon kimlik doğrulaması, Google ile Oturum Açma, Facebook Oturumu Açma, Twitter Oturum Açma ve GitHub Oturum Açma için oturum açma akışları.
  • Hesap Yönetimi - hesap oluşturma ve parola sıfırlama gibi hesap yönetimi görevlerini yerine getirmek için akışlar.
  • Hesap Bağlama - kullanıcı hesaplarını kimlik sağlayıcıları arasında güvenli bir şekilde bağlamaya yönelik akışlar.
  • Anonim Kullanıcı Yükseltme - anonim kullanıcıları güvenli bir şekilde yükseltmek için akışlar.
  • Özel Temalar - FirebaseUI'nin görünümünü uygulamanıza uyacak şekilde özelleştirin. Ayrıca, FirebaseUI açık kaynak olduğundan, projeyi çatallayabilir ve tam olarak ihtiyaçlarınıza göre özelleştirebilirsiniz.
  • Şifreler için Smart Lock - otomatik entegrasyon Şifreler için Smart Lock hızlı çapraz cihaz oturum açma için.

Sen başlamadan önce

  1. Henüz yapmadıysanız, Android projenize Firebase'i ekleyin .

  2. Proje düzeyindeki build.gradle dosyanızda, hem buildscript hem de allprojects bölümlerinize Google'ın Maven deposunu dahil ettiğinizden emin olun.

  3. build.gradle bağımlılıklarını uygulama düzeyindeki build.gradle dosyanıza build.gradle . Facebook veya Twitter ile oturum açmayı desteklemek istiyorsanız, Facebook ve Twitter SDK'larını da dahil edin:

    dependencies {
        // ...
    
        implementation 'com.firebaseui:firebase-ui-auth:6.2.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:4.x'
    
        // Required only if Twitter login support is required
        // Find the latest Twitter SDK releases here: https://goo.gl/E5wZvQ
        implementation 'com.twitter.sdk.android:twitter-core:3.x'
    }
    

    FirebaseUI Auth SDK, Firebase SDK ve Google Play hizmetleri SDK'sına geçişli bağımlılıklara sahiptir.

  4. Firebase konsolunda , Kimlik Doğrulama bölümünü açın ve desteklemek istediğiniz oturum açma yöntemlerini etkinleştirin. Bazı oturum açma yöntemleri, genellikle hizmetin geliştirici konsolunda bulunan ek bilgiler gerektirir.

  5. Google Oturum Açma'yı destekliyorsanız ve henüz uygulamanızın SHA-1 parmak izini belirtmediyseniz, bunu Firebase konsolunun Ayarlar sayfasından yapın . Uygulamanızın SHA-1 parmak izini nasıl alacağınızla ilgili ayrıntılar için İstemcinizin Kimlik Doğrulamasına bakın.

  6. Facebook veya Twitter ile oturum açmayı destekliyorsanız, strings.xml her sağlayıcının gerektirdiği tanımlama bilgilerini 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>
      <!-- Twitter consumer key and secret -->
      <string name="twitter_consumer_key" translatable="false">YOUR_CONSUMER_KEY</string>
      <string name="twitter_consumer_secret" translatable="false">YOUR_CONSUMER_SECRET</string>
    </resources>
    

oturum aç

FirebaseUI oturum açma akışını başlatmak için tercih ettiğiniz oturum açma yöntemleriyle bir oturum açma amacı oluşturun:

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
startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .build(),
        RC_SIGN_IN);

Kotlin + KTX

// 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
startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .build(),
        RC_SIGN_IN)

Oturum açma akışı tamamlandığında, sonucu onActivityResult alacaksınız:

Java

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN) {
        IdpResponse response = IdpResponse.fromResultIntent(data);

        if (resultCode == 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.
            // ...
        }
    }
}

Kotlin + KTX

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == RC_SIGN_IN) {
        val response = IdpResponse.fromResultIntent(data)

        if (resultCode == Activity.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.
            // ...
        }
    }
}

Oturum açma yöntemlerini ayarlayın

  1. Firebase konsolunda Kimlik Doğrulama bölümünü açın. Oturum açma yöntemi sekmesinde, E-posta / Şifre sağlayıcısını etkinleştirin. E-posta bağlantısı oturum açmayı kullanmak için e-posta / şifre oturum açma özelliğinin etkinleştirilmesi gerektiğini unutmayın.

  2. 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 .

  3. Ayrıca. Kullanım eposta bağlantı işareti Firebase Dinamik Linkler etkinleştirmek zorunda yılında olacak Firebase konsoluna , gezinme çubuğunda yetişen altında Dinamik bağlantılar tıklayın. Başlarken'i tıklayın ve bir alan ekleyin. Burada seçtiğiniz alan, kullanıcılarınıza gönderilen e-posta bağlantılarına yansıtılacaktır.

  4. Bir EmailBuilder örneğinde enableEmailLinkSignIn çağırarak enableEmailLinkSignIn e-posta bağlantısı oturum açmayı etkinleştirebilirsiniz. Ayrıca ActionCodeSettings setHandleCodeInApp true olarak ayarlanmış geçerli bir ActionCodeSettings nesnesi sağlamanız gerekir. Ayrıca, setUrl URL'yi, setUrl konsolunda Kimlik Doğrulama -> Oturum Açma Yöntemleri -> Yetkili alanlar altında beyaz listeye setUrl gerekir.

    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();
    
    startActivityForResult(
            AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setAvailableProviders(Arrays.asList(
                            new AuthUI.IdpConfig.EmailBuilder().enableEmailLinkSignIn()
                            .setActionCodeSettings(actionCodeSettings).build())
                    .build(),
            RC_SIGN_IN);
    
    
  5. Bağlantıyı belirli bir aktivitede yakalamak istiyorsanız, lütfen burada özetlenen adımları izleyin. Aksi takdirde, bağlantı başlatıcı etkinliğinize yönlendirilecektir.

  6. Derin bağlantıyı yakaladığınızda, bunu sizin için halledebileceğimizi doğrulamanız gerekecek. Yapabilirsek, setEmailLink aracılığıyla bize setEmailLink .

    if (AuthUI.canHandleIntent(getIntent())) {
        if (getIntent().getExtras() == null) {
                return;
            }
            String link = getIntent().getExtras().getString(ExtraConstants.EMAIL_LINK_SIGN_IN);
            if (link != null) {
                startActivityForResult(
                        AuthUI.getInstance()
                                .createSignInIntentBuilder()
                                .setEmailLink(link)
                                .setAvailableProviders(getAvailableProviders())
                                .build(),
                        RC_SIGN_IN);
            }
    }
    
  7. İsteğe bağlı Cihazlar arası e-posta bağlantısı ile oturum açma desteklenir, yani Android uygulamanız aracılığıyla gönderilen bağlantı web veya iOS uygulamalarınızda oturum açmak için kullanılabilir. Varsayılan olarak, cihazlar arası destek etkindir. Sen arayarak devre dışı bırakabilirsiniz setForceSameDevice üzerinde EmailBuilder örneği.

    Daha fazla bilgi için FirebaseUI-Web ve FirebaseUI-iOS'a bakın.

Oturumu Kapat

FirebaseUI, tüm sosyal kimlik sağlayıcılarının yanı sıra Firebase Authentication'dan çıkış yapmak için kolaylık yöntemleri sağlar:

Java

AuthUI.getInstance()
        .signOut(this)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            public void onComplete(@NonNull Task<Void> task) {
                // ...
            }
        });

Kotlin + KTX

AuthUI.getInstance()
        .signOut(this)
        .addOnCompleteListener {
            // ...
        }

Ayrıca kullanıcının hesabını tamamen silebilirsiniz:

Java

AuthUI.getInstance()
        .delete(this)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                // ...
            }
        });

Kotlin + KTX

AuthUI.getInstance()
        .delete(this)
        .addOnCompleteListener {
            // ...
        }

Özelleştirme

Varsayılan olarak FirebaseUI, tema oluşturma için AppCompat kullanır; bu, uygulamanızın renk düzenini doğal olarak benimseyeceği anlamına gelir. Daha fazla özelleştirmeye ihtiyacınız varsa, oturum açma Intent oluşturucuya bir tema ve bir logo iletebilirsiniz:

Java

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setLogo(R.drawable.my_great_logo)      // Set logo drawable
                .setTheme(R.style.MySuperAppTheme)      // Set theme
                .build(),
        RC_SIGN_IN);

Kotlin + KTX

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setLogo(R.drawable.my_great_logo) // Set logo drawable
                .setTheme(R.style.MySuperAppTheme) // Set theme
                .build(),
        RC_SIGN_IN)

Ayrıca özel bir gizlilik politikası ve hizmet şartları da belirleyebilirsiniz:

Java

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setTosAndPrivacyPolicyUrls(
                        "https://example.com/terms.html",
                        "https://example.com/privacy.html")
                .build(),
        RC_SIGN_IN);

Kotlin + KTX

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setTosAndPrivacyPolicyUrls(
                        "https://example.com/terms.html",
                        "https://example.com/privacy.html")
                .build(),
        RC_SIGN_IN)

Sonraki adımlar

  • FirebaseUI'yi kullanma ve özelleştirme hakkında daha fazla bilgi için GitHub'daki README dosyasına bakın.
  • FirebaseUI'de bir sorun bulursanız ve bunu bildirmek isterseniz GitHub sorun izleyiciyi kullanın.