Menambahkan login secara mudah ke aplikasi Android dengan FirebaseUI

FirebaseUI adalah library yang dibuat sebagai tambahan dari Firebase Authentication SDK yang menyediakan alur UI drop-in untuk digunakan dalam aplikasi Anda. FirebaseUI memberikan manfaat berikut:

  • Beberapa Penyedia - alur login untuk email, autentikasi telepon, Login dengan Google, Login dengan Facebook, dan Login dengan Twitter.
  • Manajemen Akun - alur untuk menangani tugas pengelolaan akun, seperti pembuatan akun dan penyetelan ulang sandi.
  • Penautan Akun - alur untuk menautkan akun pengguna secara aman di seluruh penyedia identitas.
  • Tema Kustom - menyesuaikan tampilan FirebaseUI agar cocok dengan aplikasi Anda. Selain itu, karena FirebaseUI bersifat open source, Anda bisa menyalin project dan menyesuaikannya sesuai kebutuhan.
  • Smart Lock untuk Sandi - integrasi otomatis dengan Smart Lock untuk Sandi untuk login lintas perangkat dengan cepat.

Sebelum memulai

  1. Tambahkan Firebase ke project Android.

  2. Tambahkan dependensi untuk FirebaseUI ke file build.gradle tingkat aplikasi. Jika Anda ingin mendukung login dengan Facebook atau Twitter, sertakan juga SDK Facebook dan Twitter:

    dependencies {
        // ...
    
        implementation 'com.firebaseui:firebase-ui-auth:4.1.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 memiliki ketergantungan transitif pada Firebase SDK dan SDK layanan Google Play.

  3. Jika Anda belum menghubungkan aplikasi dengan project Firebase, lakukanlah dari Firebase console.

  4. Di Firebase console, buka bagian Authentication, lalu aktifkan metode login yang ingin Anda dukung. Beberapa metode login memerlukan informasi tambahan yang biasanya tersedia di konsol developer layanan.

  5. Jika Anda mendukung Login dengan Google dan belum menentukan sidik jari SHA-1 aplikasi, lakukanlah dari halaman Setelan di Firebase console. Baca bagian Mengautentikasi Klien Anda untuk mengetahui informasi selengkapnya mengenai cara mendapatkan sidik jari SHA-1 aplikasi Anda.

  6. Jika Anda mendukung login dengan Facebook atau Twitter, tambahkan resource string ke strings.xml yang menentukan informasi identifikasi yang diperlukan oleh masing-masing penyedia:

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

Login

Untuk memulai alur login FirebaseUI, buat intent login dengan metode login yang Anda pilih:

Java
Android

// 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
Android

// 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)

Setelah alur login selesai, Anda akan menerima hasilnya di onActivityResult:

Java
Android

@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
Android

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.
            // ...
        }
    }
}

Logout

FirebaseUI menyediakan cara mudah untuk logout dari Firebase Authentication dan semua penyedia identitas sosial:

Java
Android

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

Kotlin
Android

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

Anda juga dapat menghapus akun pengguna sepenuhnya:

Java
Android

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

Kotlin
Android

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

Penyesuaian

Secara default, FirebaseUI menggunakan AppCompat untuk penentuan tema yang berarti ini akan secara alami menggunakan skema warna aplikasi Anda. Jika Anda memerlukan penyesuaian lebih lanjut, Anda dapat meneruskan tema dan logo ke builder Intent login:

Java
Android

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
Android

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)

Anda juga dapat menetapkan kebijakan privasi dan persyaratan layanan khusus:

Java
Android

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

Kotlin
Android

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

Langkah Berikutnya

  • Untuk mengetahui informasi lebih lanjut mengenai cara menggunakan dan menyesuaikan FirebaseUI, baca file README di GitHub.
  • Jika Anda menemukan masalah di FirebaseUI dan ingin melaporkannya, gunakan pelacak masalah GitHub.

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.