
FirebaseUI Auth হলো Firebase Authentication SDK-এর উপর ভিত্তি করে নির্মিত একটি লাইব্রেরি, যা আপনার অ্যাপে ব্যবহারের জন্য ড্রপ-ইন UI ফ্লো প্রদান করে।
প্রস্তাবিত সাইন-ইন পদ্ধতিতে কম্পোজ স্ক্রিন ব্যবহার করা হয়। যেসব অ্যাপ এখনও অ্যাক্টিভিটি ব্যবহার করে, সেগুলোর জন্য ‘বিদ্যমান অ্যাক্টিভিটি-ভিত্তিক অ্যাপ’ বিভাগটি দেখুন।
FirebaseUI Auth নিম্নলিখিত সুবিধাগুলো প্রদান করে:
- একাধিক প্রোভাইডার — ইমেল/পাসওয়ার্ড, ফোন, গুগল, ফেসবুক, অ্যাপল, গিটহাব, মাইক্রোসফট, ইয়াহু, টুইটার, অ্যানোনিমাস অথেন্টিকেশন এবং কাস্টম OAuth-এর জন্য সাইন-ইন ফ্লো।
- অ্যাকাউন্ট ম্যানেজমেন্ট — অ্যাকাউন্ট তৈরি এবং পাসওয়ার্ড রিসেটের মতো অ্যাকাউন্ট পরিচালনার কাজগুলো সম্পাদনের কার্যপ্রণালী।
- অ্যাকাউন্ট লিঙ্কিং — বিভিন্ন আইডেন্টিটি প্রোভাইডারের মধ্যে ব্যবহারকারীর অ্যাকাউন্টগুলোকে নিরাপদে লিঙ্ক করার প্রক্রিয়া।
- বেনামী ব্যবহারকারীর আপগ্রেডিং — বেনামী ব্যবহারকারীদের নিরাপদে আপগ্রেড করার প্রক্রিয়া।
- কাস্টম থিম — ম্যাটেরিয়াল ৩ ইউআই সাপোর্ট, যা আপনার অ্যাপের থিম গ্রহণ করতে পারে। এছাড়াও, ফায়ারবেসইউআই ওপেন সোর্স হওয়ায়, আপনি প্রজেক্টটি ফর্ক করে আপনার প্রয়োজন অনুযায়ী নিখুঁতভাবে কাস্টমাইজ করতে পারেন।
- ক্রেডেনশিয়াল ম্যানেজার — দ্রুত বিভিন্ন ডিভাইসে সাইন-ইন করার জন্য ক্রেডেনশিয়াল ম্যানেজারের সাথে স্বয়ংক্রিয় ইন্টিগ্রেশন।
- মাল্টি-ফ্যাক্টর অথেনটিকেশন — অতিরিক্ত নিরাপত্তার জন্য এসএমএস এবং টিওটিপি (TOTP) সাপোর্ট।
শুরু করার আগে
- যদি আগে থেকে না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে ফায়ারবেস যোগ করুন ।
- 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-services Gradle প্লাগইন দ্বারা Google Sign-In কনফিগারেশন স্বয়ংক্রিয়ভাবে প্রদান করা হয়। নিশ্চিত করুন যে আপনি Firebase Console- এ Google Sign-In সক্রিয় করেছেন।
ফেসবুক লগইন
ফেসবুক লগইন ব্যবহার করলে, আপনার ফেসবুক অ্যাপ আইডি strings.xml এ যোগ করুন:
<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 for Developers ডকুমেন্টেশন দেখুন।
অন্যান্য সরবরাহকারী
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,
)
},
)
)
}
}
ডিপ-লিঙ্ক পরিচালনার সম্পূর্ণ কার্যপ্রণালীর জন্য, গিটহাবের 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()
},
)
}
}
}
}
}
এটি আপনাকে নিম্নলিখিত বিষয়গুলো সহ একটি সম্পূর্ণ প্রমাণীকরণ প্রবাহ প্রদান করে:
- পাসওয়ার্ড দ্বারা প্রমাণীকরণ।
- গুগল সাইন-ইন।
- পাসওয়ার্ড রিসেট করা হয়েছে।
- উপাদান ৩ স্টাইলিং।
- ক্রেডেনশিয়াল ম্যানেজার সহায়তা।
- সরাসরি কলব্যাকের মাধ্যমে ত্রুটি ব্যবস্থাপনা।
সাইন আউট
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 ফাইলের থিমিং এবং কাস্টমাইজেশন বিভাগটি দেখুন।
বিদ্যমান কার্যকলাপ-ভিত্তিক অ্যাপ
আপনার অ্যাপে যদি এখনও অ্যাক্টিভিটি এবং অ্যাক্টিভিটি রেজাল্ট এপিআই ব্যবহৃত হয়, তাহলে আপনি 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))