
FirebaseUI হলো Firebase Authentication SDK-এর উপর ভিত্তি করে নির্মিত একটি লাইব্রেরি, যা আপনার অ্যাপে ব্যবহারের জন্য ড্রপ-ইন UI ফ্লো প্রদান করে। FirebaseUI নিম্নলিখিত সুবিধাগুলো প্রদান করে:
- একাধিক প্রোভাইডার - ইমেল/পাসওয়ার্ড, ইমেল লিঙ্ক, ফোন অথেন্টিকেশন, গুগল সাইন-ইন, ফেসবুক লগইন, টুইটার লগইন এবং গিটহাব লগইনের জন্য সাইন-ইন ফ্লো।
- অ্যাকাউন্ট ম্যানেজমেন্ট - অ্যাকাউন্ট তৈরি এবং পাসওয়ার্ড রিসেটের মতো অ্যাকাউন্ট পরিচালনার কাজগুলো সম্পাদনের কার্যপ্রণালী।
- অ্যাকাউন্ট লিঙ্কিং - বিভিন্ন আইডেন্টিটি প্রোভাইডারের মধ্যে ব্যবহারকারীর অ্যাকাউন্টগুলো নিরাপদে লিঙ্ক করার প্রক্রিয়া।
- বেনামী ব্যবহারকারীর আপগ্রেডিং - বেনামী ব্যবহারকারীদের নিরাপদে আপগ্রেড করার প্রক্রিয়া।
- কাস্টম থিম - আপনার অ্যাপের সাথে মিলিয়ে FirebaseUI-এর চেহারা কাস্টমাইজ করুন। এছাড়াও, FirebaseUI ওপেন সোর্স হওয়ায়, আপনি প্রজেক্টটি ফর্ক করে আপনার প্রয়োজন অনুযায়ী নিখুঁতভাবে কাস্টমাইজ করতে পারেন।
- ক্রেডেনশিয়াল ম্যানেজার - দ্রুত বিভিন্ন ডিভাইসে সাইন-ইন করার জন্য ক্রেডেনশিয়াল ম্যানেজারের সাথে স্বয়ংক্রিয় ইন্টিগ্রেশন।
শুরু করার আগে
যদি আগে থেকে না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে ফায়ারবেস যোগ করুন ।
আপনার অ্যাপ-লেভেলের
build.gradle(.kts)ফাইলে FirebaseUI-এর ডিপেন্ডেন্সিগুলো যোগ করুন। যদি আপনি Facebook বা Twitter দিয়ে সাইন-ইন সমর্থন করতে চান, তাহলে Facebook এবং Twitter SDK-গুলোও অন্তর্ভুক্ত করুন:dependencies { // ... implementation("com.firebaseui:firebase-ui-auth:9.0.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:8.x") }FirebaseUI Auth SDK-টি Firebase SDK এবং Google Play services SDK-এর উপর পরোক্ষভাবে নির্ভরশীল।
Firebase কনসোলে, Security > Authentication- এ যান।
সাইন-ইন পদ্ধতি ট্যাবে, আপনি যে সাইন-ইন প্রোভাইডারগুলোকে সমর্থন করতে চান, সেগুলোকে সক্রিয় করুন। কিছু সাইন-ইন প্রোভাইডারের জন্য অতিরিক্ত তথ্যের প্রয়োজন হয়, যা সাধারণত পরিষেবাটির ডেভেলপার কনসোলে পাওয়া যায়।
যদি আপনি গুগল সাইন-ইন চালু করে থাকেন:
আপনার Firebase কনফিগারেশন ফাইলটি আপডেট করুন।
Firebase কনসোলে অনুরোধ করা হলে, আপডেট করা Firebase কনফিগারেশন ফাইলটি (
google-services.json) ডাউনলোড করুন, যেটিতে এখন Google সাইন-ইন করার জন্য প্রয়োজনীয় OAuth ক্লায়েন্টের তথ্য রয়েছে।এই আপডেট করা কনফিগারেশন ফাইলটি আপনার অ্যান্ড্রয়েড স্টুডিও প্রজেক্টে নিয়ে যান এবং বর্তমানে পুরোনো হয়ে যাওয়া সংশ্লিষ্ট কনফিগারেশন ফাইলটি প্রতিস্থাপন করুন । (দেখুন, আপনার অ্যান্ড্রয়েড প্রজেক্টে ফায়ারবেস যোগ করুন ।)
আপনার অ্যাপের SHA-1 ফিঙ্গারপ্রিন্টটি আগে থেকে নির্দিষ্ট করা না থাকলে, তা করে নিন।
Firebase কনসোলে, এখানে যান
> সাধারণ ট্যাব । নিচে স্ক্রল করে 'Your apps' কার্ডে যান, আপনার অ্যান্ড্রয়েড অ্যাপটি নির্বাচন করুন এবং 'SHA certificate fingerprints' ফিল্ডে আপনার SHA-1 ফিঙ্গারপ্রিন্ট যোগ করুন।
আপনার অ্যাপের SHA ফিঙ্গারপ্রিন্ট কীভাবে পাবেন, সে সম্পর্কে বিস্তারিত জানতে ‘আপনার ক্লায়েন্ট প্রমাণীকরণ’ দেখুন।
আপনি যদি ফেসবুক বা টুইটার দিয়ে সাইন-ইন সমর্থন করেন, তাহলে
strings.xmlএ স্ট্রিং রিসোর্স যোগ করুন যা প্রতিটি প্রোভাইডারের জন্য প্রয়োজনীয় শনাক্তকারী তথ্য নির্দিষ্ট করে:<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> </resources>
সাইন ইন করুন
একটি ActivityResultLauncher তৈরি করুন যা FirebaseUI Activity result contract-এর জন্য একটি কলব্যাক রেজিস্টার করে:
Kotlin
// See: https://developer.android.com/training/basics/intents/result private val signInLauncher = registerForActivityResult( FirebaseAuthUIActivityResultContract(), ) { res -> this.onSignInResult(res) }
Java
// See: https://developer.android.com/training/basics/intents/result private final ActivityResultLauncher<Intent> signInLauncher = registerForActivityResult( new FirebaseAuthUIActivityResultContract(), new ActivityResultCallback<FirebaseAuthUIAuthenticationResult>() { @Override public void onActivityResult(FirebaseAuthUIAuthenticationResult result) { onSignInResult(result); } } );
FirebaseUI সাইন-ইন প্রক্রিয়াটি শুরু করতে, আপনার পছন্দের সাইন-ইন পদ্ধতিগুলো ব্যবহার করে একটি সাইন-ইন ইন্টেন্ট তৈরি করুন:
Kotlin
// 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 val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build() signInLauncher.launch(signInIntent)
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 Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build(); signInLauncher.launch(signInIntent);
সাইন-ইন প্রক্রিয়া সম্পন্ন হলে, আপনি onSignInResult এ ফলাফলটি পাবেন।
Kotlin
private fun onSignInResult(result: FirebaseAuthUIAuthenticationResult) { val response = result.idpResponse if (result.resultCode == 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. // ... } }
Java
private void onSignInResult(FirebaseAuthUIAuthenticationResult result) { IdpResponse response = result.getIdpResponse(); if (result.getResultCode() == 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. // ... } }
সাইন-ইন পদ্ধতি সেট আপ করুন
ইমেল লিঙ্কের প্রমাণীকরণ
Firebase কনসোলে, Security > Authentication -এ যান।
সাইন ইন পদ্ধতি ট্যাবে, ইমেল/পাসওয়ার্ড সাইন-ইন পদ্ধতিটি সক্রিয় করুন। মনে রাখবেন, ইমেল লিঙ্ক সাইন-ইন ব্যবহার করার জন্য ইমেল/পাসওয়ার্ড সাইন-ইন অবশ্যই সক্রিয় থাকতে হবে।
একই বিভাগে, ইমেল লিঙ্ক (পাসওয়ার্ডবিহীন সাইন-ইন) পদ্ধতিটি সক্রিয় করুন এবং সেভ -এ ক্লিক করুন।
ইমেল-লিঙ্ক সাইন ইন ব্যবহার করার জন্য আপনাকে Firebase Dynamic Links সক্রিয় করতে হবে:
Firebase কনসোলে, DevOps & Engagement > Dynamic Links- এ যান।
'Get started'-এ ক্লিক করুন এবং তারপর একটি ডোমেইন যোগ করুন। আপনি এখানে যে ডোমেইনটি নির্বাচন করবেন, সেটি আপনার ব্যবহারকারীদের কাছে পাঠানো ইমেল লিঙ্কগুলিতে প্রতিফলিত হবে।
একটি
EmailBuilderইনস্ট্যান্সেenableEmailLinkSignInকল করে আপনি FirebaseUI-তে ইমেল লিঙ্ক সাইন ইন সক্রিয় করতে পারেন। এছাড়াও, আপনাকে একটি বৈধActionCodeSettingsঅবজেক্ট প্রদান করতে হবে, যেখানেsetHandleCodeInApptrue-তে সেট করা থাকবে।এছাড়াও,
setUrlএ আপনি যে URL-টি পাস করবেন, সেটিকে হোয়াইটলিস্ট করতে হবে:Firebase কনসোলে, Security > Authentication > Settings ট্যাবে যান।
অনুমোদিত ডোমেইন বিভাগে, 'ডোমেইন যোগ করুন'- এ ক্লিক করুন এবং আপনার ডোমেইনটি যোগ করুন।
Kotlin
val 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() val providers = listOf( EmailBuilder() .enableEmailLinkSignIn() .setActionCodeSettings(actionCodeSettings) .build(), ) val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build() signInLauncher.launch(signInIntent)
Java
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(); List<AuthUI.IdpConfig> providers = Arrays.asList( new AuthUI.IdpConfig.EmailBuilder() .enableEmailLinkSignIn() .setActionCodeSettings(actionCodeSettings) .build() ); Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .build(); signInLauncher.launch(signInIntent);
আপনি যদি কোনো নির্দিষ্ট অ্যাক্টিভিটিতে লিঙ্কটি পেতে চান, তাহলে অনুগ্রহ করে এখানে বর্ণিত ধাপগুলো অনুসরণ করুন। অন্যথায়, লিঙ্কটি আপনার লঞ্চার অ্যাক্টিভিটিতে রিডাইরেক্ট হয়ে যাবে।
আপনি ডিপ লিঙ্কটি পাওয়ার পর, আমরা আপনার জন্য এটি পরিচালনা করতে পারব কিনা তা আপনাকে যাচাই করতে হবে। যদি আমরা তা করতে পারি, তাহলে আপনাকে
setEmailLinkমাধ্যমে এটি আমাদের কাছে পাঠিয়ে দিতে হবে।Kotlin
if (AuthUI.canHandleIntent(intent)) { val extras = intent.extras ?: return val link = extras.getString("email_link_sign_in") if (link != null) { val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setEmailLink(link) .setAvailableProviders(providers) .build() signInLauncher.launch(signInIntent) } }
Java
if (AuthUI.canHandleIntent(getIntent())) { if (getIntent().getExtras() == null) { return; } String link = getIntent().getExtras().getString("email_link_sign_in"); if (link != null) { Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setEmailLink(link) .setAvailableProviders(providers) .build(); signInLauncher.launch(signInIntent); } }
ঐচ্ছিক ক্রস-ডিভাইস ইমেল লিঙ্ক সাইন-ইন সমর্থিত, যার অর্থ হলো আপনার অ্যান্ড্রয়েড অ্যাপের মাধ্যমে পাঠানো লিঙ্কটি আপনার ওয়েব বা অ্যাপল অ্যাপে লগ ইন করার জন্য ব্যবহার করা যাবে। ডিফল্টরূপে, ক্রস-ডিভাইস সমর্থন সক্রিয় থাকে।
EmailBuilderইনস্ট্যান্সেsetForceSameDeviceকল করে আপনি এটি নিষ্ক্রিয় করতে পারেন।আরও তথ্যের জন্য FirebaseUI-Web এবং FirebaseUI-iOS দেখুন।
সাইন আউট
FirebaseUI, Firebase Authentication এবং সকল সোশ্যাল আইডেন্টিটি প্রোভাইডার থেকে সাইন আউট করার সুবিধাজনক পদ্ধতি প্রদান করে:
Kotlin
AuthUI.getInstance() .signOut(this) .addOnCompleteListener { // ... }
Java
AuthUI.getInstance() .signOut(this) .addOnCompleteListener(new OnCompleteListener<Void>() { public void onComplete(@NonNull Task<Void> task) { // ... } });
আপনি ব্যবহারকারীর অ্যাকাউন্টটি সম্পূর্ণভাবে মুছেও ফেলতে পারেন:
Kotlin
AuthUI.getInstance() .delete(this) .addOnCompleteListener { // ... }
Java
AuthUI.getInstance() .delete(this) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { // ... } });
কাস্টমাইজেশন
ডিফল্টরূপে FirebaseUI থিমিংয়ের জন্য AppCompat ব্যবহার করে, যার মানে এটি স্বাভাবিকভাবেই আপনার অ্যাপের কালার স্কিম গ্রহণ করবে। যদি আপনার আরও কাস্টমাইজেশনের প্রয়োজন হয়, তাহলে আপনি সাইন-ইন Intent বিল্ডারে একটি থিম এবং একটি লোগো পাস করতে পারেন:
Kotlin
val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setLogo(R.drawable.my_great_logo) // Set logo drawable .setTheme(R.style.MySuperAppTheme) // Set theme .build() signInLauncher.launch(signInIntent)
Java
Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setLogo(R.drawable.my_great_logo) // Set logo drawable .setTheme(R.style.MySuperAppTheme) // Set theme .build(); signInLauncher.launch(signInIntent);
এছাড়াও আপনি নিজের মতো করে গোপনীয়তা নীতি এবং পরিষেবার শর্তাবলী নির্ধারণ করতে পারেন:
Kotlin
val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setTosAndPrivacyPolicyUrls( "https://example.com/terms.html", "https://example.com/privacy.html", ) .build() signInLauncher.launch(signInIntent)
Java
Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setTosAndPrivacyPolicyUrls( "https://example.com/terms.html", "https://example.com/privacy.html") .build(); signInLauncher.launch(signInIntent);
পরবর্তী পদক্ষেপ
- FirebaseUI ব্যবহার ও কাস্টমাইজ করার বিষয়ে আরও তথ্যের জন্য GitHub-এ থাকা README ফাইলটি দেখুন।
- আপনি যদি FirebaseUI-তে কোনো সমস্যা খুঁজে পান এবং তা জানাতে চান, তাহলে GitHub ইস্যু ট্র্যাকার ব্যবহার করুন।