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