FirebaseUI-এর সাহায্যে আপনার Android অ্যাপে সহজেই সাইন-ইন করার সুবিধা যোগ করুন

FirebaseUI Auth হল Firebase যাচাইকরণ SDK-এর উপরে তৈরি একটি লাইব্রেরি যা আপনার অ্যাপে ব্যবহারের জন্য ড্রপ-ইন UI ফ্লো প্রদান করে।

সাজেস্ট করা সাইন-ইন ফ্লোতে 'কম্পোজ' স্ক্রিন ব্যবহার করা হয়। যেসব অ্যাপ এখনও অ্যাক্টিভিটি ব্যবহার করে, সেগুলির জন্য আগে থেকে থাকা অ্যাক্টিভিটি-ভিত্তিক অ্যাপ বিভাগ দেখুন।

FirebaseUI Auth নিম্নলিখিত সুবিধাগুলি প্রদান করে:

  • একাধিক পরিষেবা প্রদানকারী — ইমেল/পাসওয়ার্ড, ফোন, Google, Facebook, Apple, GitHub, Microsoft, Yahoo, Twitter, পরিচয় গোপন রেখে যাচাইকরণ ও কাস্টম OAuth-এর জন্য সাইন-ইন ফ্লো।
  • অ্যাকাউন্ট ম্যানেজমেন্ট — অ্যাকাউন্ট তৈরি করা ও পাসওয়ার্ড রিসেট করার মতো অ্যাকাউন্ট ম্যানেজমেন্ট টাস্ক হ্যান্ডেল করার ফ্লো।
  • অ্যাকাউন্ট লিঙ্ক করা — পরিচয় প্রদানকারী জুড়ে ব্যবহারকারীর অ্যাকাউন্ট নিরাপদে লিঙ্ক করার ফ্লো।
  • পরিচয় গোপন করা ব্যবহারকারী আপগ্রেড করা — পরিচয় গোপন করা ব্যবহারকারীদের নিরাপদে আপগ্রেড করার ফ্লো।
  • কাস্টম থিম — Material 3 UI সাপোর্ট যা আপনার অ্যাপ থিমকে ইনহেরিট করতে পারে। এছাড়াও, FirebaseUI ওপেন সোর্স হওয়ার কারণে, আপনি প্রোজেক্ট ফর্ক করতে এবং নিজের প্রয়োজনমতো কাস্টমাইজ করতে পারবেন।
  • Credential Manager — দ্রুত ক্রস-ডিভাইস সাইন-ইনের জন্য Credential Manager-এর সাথে অটোমেটিক ইন্টিগ্রেশন।
  • বহু-স্তরীয় যাচাইকরণ — অতিরিক্ত নিরাপত্তার জন্য এসএমএস ও TOTP সহায়তা।

শুরু করার আগে

  1. আপনি আগে থেকে না করে থাকলে, আপনার Android প্রোজেক্টে Firebase যোগ করুন।
  2. Firebase কনসোলে, আপনি যেসব সাইন-ইন পদ্ধতি চালু করতে চান সেগুলি চালু করুন।
  3. আপনার অ্যাপ মডিউলে FirebaseUI Auth যোগ করুন:
dependencies {
    // Check Maven Central for the latest version:
    // https://central.sonatype.com/artifact/com.firebaseui/firebase-ui-auth/versions
    implementation("com.firebaseui:firebase-ui-auth:10.0.0-beta02")

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

সাইন-ইন পদ্ধতি সেট-আপ করা

Google সাইন-ইন

Google সাইন-ইন কনফিগারেশন অটোমেটিক google-services.json কনফিগারেশন ফাইল প্রদান করে। আপনি Firebase কনসোলে Google সাইন-ইন চালু করেছেন কিনা তা নিশ্চিত করুন।

Facebook লগ-ইন

Facebook লগ-ইন ব্যবহার করলে, strings.xml-এ আপনার Facebook অ্যাপ আইডি যোগ করুন:

<resources>
    <string name="facebook_application_id" translatable="false">YOUR_FACEBOOK_APP_ID</string>
    <string name="facebook_login_protocol_scheme" translatable="false">fbYOUR_FACEBOOK_APP_ID</string>
    <string name="facebook_client_token" translatable="false">CHANGE-ME</string>
</resources>

সেট-আপ সংক্রান্ত নির্দেশাবলীর জন্য ডেভেলপারদের জন্য Facebook ডকুমেন্টেশন দেখুন।

অন্যান্য পরিষেবা প্রদানকারী

Twitter, GitHub, Microsoft, Yahoo ও Apple পরিষেবা প্রদানকারীদের ক্ষেত্রে Firebase Console-এ কনফিগারেশন করতে হয়, তবে Android-নির্দিষ্ট কোনও অতিরিক্ত সেট-আপের প্রয়োজন হয় না। প্রোভাইডার-নির্দিষ্ট নির্দেশাবলীর জন্য Firebase Auth ডকুমেন্টেশন দেখুন।

authUIConfiguration-এর মধ্যে আপনি যেসব পরিষেবা প্রদানকারীকে চান সেগুলি বেছে নিন:

val configuration = authUIConfiguration {
    context = applicationContext
    providers {
        provider(AuthProvider.Email())
        provider(
            AuthProvider.Phone(
                defaultCountryCode = "US",
            )
        )
        provider(
            AuthProvider.Google(
                scopes = listOf("email"),
                serverClientId = null,
            )
        )
        provider(AuthProvider.Facebook())
    }
}

ইমেল লিঙ্ক ব্যবহার করে সাইন-ইন করার সুবিধা ইমেল পরিষেবা প্রদানকারীর কনফিগারেশনে থাকে:

val configuration = authUIConfiguration {
    context = applicationContext
    providers {
        provider(
            AuthProvider.Email(
                isEmailLinkSignInEnabled = true,
                emailLinkActionCodeSettings = actionCodeSettings {
                    url = "https://example.com/auth"
                    handleCodeInApp = true
                    setAndroidPackageName(
                        "com.example.app",
                        true,
                        null,
                    )
                },
            )
        )
    }
}

সম্পূর্ণ ডিপ-লিঙ্ক হ্যান্ডেলিং ফ্লোয়ের জন্য, GitHub-এ README-এর ইমেল লিঙ্ক সাইন-ইন বিভাগ দেখুন।

সাইন-ইন করুন

AuthUIConfiguration তৈরি করো, তারপর FirebaseAuthScreen দেখাও।

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val authUI = FirebaseAuthUI.getInstance()

        setContent {
            MyAppTheme {
                val configuration = authUIConfiguration {
                    context = applicationContext
                    theme = AuthUITheme.fromMaterialTheme()
                    providers {
                        provider(AuthProvider.Email())
                        provider(
                            AuthProvider.Google(
                                scopes = listOf("email"),
                                serverClientId = null,
                            )
                        )
                    }
                }

                if (authUI.isSignedIn()) {
                    HomeScreen()
                } else {
                    FirebaseAuthScreen(
                        configuration = configuration,
                        authUI = authUI,
                        onSignInSuccess = { result ->
                            // User signed in successfully
                        },
                        onSignInFailure = { exception ->
                            // Sign in failed
                        },
                        onSignInCancelled = {
                            finish()
                        },
                    )
                }
            }
        }
    }
}

এটি আপনাকে এগুলি সহ সম্পূর্ণ যাচাইকরণ ফ্লো দেয়:

  • পাসওয়ার্ড যাচাইকরণ।
  • Google-এ সাইন-ইন করুন।
  • পাসওয়ার্ড রিসেট করা হয়েছে।
  • Material 3 স্টাইলিং।
  • ক্রেডেনশিয়াল ম্যানেজার সংক্রান্ত সহায়তা।
  • সরাসরি কলব্যাকের মাধ্যমে সমস্যা সমাধান করা।

সাইন-আউট করুন

FirebaseUI Auth সাইন-আউট ও অ্যাকাউন্ট মুছে দেওয়ার জন্য সুবিধাজনক পদ্ধতি প্রদান করে:

lifecycleScope.launch {
    FirebaseAuthUI.getInstance().signOut(applicationContext)
}
lifecycleScope.launch {
    FirebaseAuthUI.getInstance().delete(applicationContext)
}

কাস্টোমাইজেশন

FirebaseUI Auth কাস্টমাইজ করা যায় এবং শুরু করার সবচেয়ে সহজ উপায় হল authUIConfiguration-এ সরাসরি থিম সেট করা:

val configuration = authUIConfiguration {
    context = applicationContext
    providers {
        provider(AuthProvider.Email())
        provider(AuthProvider.Google(scopes = listOf("email"), serverClientId = null))
    }
    theme = AuthUITheme.Adaptive
}

এছাড়াও আপনি যা করতে পারেন:

  • AuthUITheme.Default, AuthUITheme.DefaultDark বা AuthUITheme.Adaptive ব্যবহার করুন।
  • AuthUITheme.fromMaterialTheme()-এর মাধ্যমে আপনার অ্যাপ থিম ইনহেরিট করুন।
  • .copy()-এর মাধ্যমে ডিফল্ট থিম কাস্টমাইজ করুন।
  • সম্পূর্ণ কাস্টম AuthUITheme তৈরি করুন।
  • authUIConfiguration-এ লোগো, পরিষেবার শর্তাবলীর URL ও গোপনীয়তা নীতির URL সেট করুন।

থিম ও কাস্টমাইজেশন সংক্রান্ত সম্পূর্ণ বিবরণ, যার মধ্যে থিমের অগ্রাধিকার, প্রদানকারীর বোতামের স্টাইলিং ও কাস্টম থিম অন্তর্ভুক্ত, তা GitHub-এ readme-র থিম ও কাস্টমাইজেশন বিভাগে দেখুন।

আগে থেকেই থাকা অ্যাক্টিভিটি-ভিত্তিক অ্যাপ

আপনার অ্যাপ এখনও অ্যাক্টিভিটি ও অ্যাক্টিভিটি রেজাল্ট API ব্যবহার করলে, আপনি AuthFlowController ব্যবহার করে অ্যাক্টিভিটি-ভিত্তিক লঞ্চ ফ্লো রাখতে পারবেন:

private val authLauncher = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult(),
) { result ->
    if (result.resultCode == RESULT_OK) {
        val user = FirebaseAuth.getInstance().currentUser
        // ...
    } else {
        // User cancelled or sign-in failed
    }
}

val configuration = authUIConfiguration {
    context = applicationContext
    providers {
        provider(AuthProvider.Email())
        provider(
            AuthProvider.Google(
                scopes = listOf("email"),
                serverClientId = null,
            )
        )
    }
}

val controller = FirebaseAuthUI.getInstance().createAuthFlow(configuration)
authLauncher.launch(controller.createIntent(this))