ফায়ারবেসআইআই দিয়ে আপনার অ্যান্ড্রয়েড অ্যাপে সহজেই সাইন-ইন যুক্ত করুন

FirebaseUI একটি লাইব্রেরি Firebase প্রমাণীকরণ SDK এর উপরে নির্মিত ড্রপ-ইন UI 'তে আপনার অ্যাপ ব্যবহারের জন্য প্রবাহিত উপলব্ধ রয়েছে। FirebaseUI নিম্নলিখিত সুবিধা প্রদান করে:

  • একাধিক প্রোভাইডার - সাইন-ইন ইমেল / পাসওয়ার্ড, ইমেইল লিঙ্ক, ফোন প্রমাণীকরণের জন্য প্রবাহ, Google সাইন-ইন, ফেসবুক লগইন, টুইটার লগইন করুন, এবং GitHub লগইন করুন।
  • অ্যাকাউন্ট পরিচালনা - যেমন অ্যাকাউন্ট তৈরি এবং পাসওয়ার্ড রিসেট হিসাবে অ্যাকাউন্ট পরিচালনা টাস্ক, হ্যান্ডেল করতে বয়ে চলে।
  • অ্যাকাউন্ট লিঙ্ক - প্রবাহিত নিরাপদে লিংক ব্যবহারকারী পরিচিতি প্রদানকারীদের জুড়ে অ্যাকাউন্ট।
  • বেনামী ব্যবহারকারী আপগ্রেড - নিরাপদে বেনামী ব্যবহারকারীদের আপগ্রেড করার বয়ে চলে।
  • কাস্টম থিম - আপনার অ্যাপ্লিকেশন মেলে FirebaseUI চেহারা কাস্টমাইজ করুন। এছাড়াও, যেহেতু FirebaseUI ওপেন সোর্স, আপনি প্রকল্পটি কাঁটাচামচ করতে পারেন এবং আপনার প্রয়োজন অনুযায়ী এটি কাস্টমাইজ করতে পারেন।
  • পাসওয়ার্ড জন্য Smart Lock - সঙ্গে স্বয়ংক্রিয় ইন্টিগ্রেশন পাসওয়ার্ড জন্য Smart Lock ফাস্ট ক্রস ডিভাইস থেকে সাইন ইন জন্য।

তুমি শুরু করার আগে

  1. আপনি ইতিমধ্যে থাকে, তাহলে আপনার অ্যান্ড্রয়েড প্রকল্পের Firebase যোগ

  2. FirebaseUI জন্য নির্ভরতা আপনার অ্যাপ-স্তরের যোগ করুন build.gradle ফাইল। আপনি যদি ফেসবুক বা টুইটারের মাধ্যমে সাইন-ইন সমর্থন করতে চান, তাহলে ফেসবুক এবং টুইটার এসডিকে অন্তর্ভুক্ত করুন:

    dependencies {
        // ...
    
        implementation 'com.firebaseui:firebase-ui-auth:7.2.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- এর ফায়ারবেস SDK এবং Google Play পরিষেবাদি SDK- এর উপর সংক্রামক নির্ভরতা রয়েছে।

  3. ইন Firebase কনসোল , প্রমাণীকরণ অধ্যায় খুলুন এবং সাইন-ইন পদ্ধতি আপনাকে সমর্থন করতে চান সক্রিয় করুন। কিছু সাইন-ইন পদ্ধতিতে অতিরিক্ত তথ্যের প্রয়োজন হয়, সাধারণত পরিষেবাটির ডেভেলপার কনসোলে পাওয়া যায়।

  4. আপনাকে সমর্থন Google সাইন-ইন এবং এখনও নির্দিষ্ট না করে আপনার অ্যাপ্লিকেশনের রয়েছে SHA-1 আঙুলের ছাপ পারেন, থেকে তা করতে সেটিংস পৃষ্ঠা Firebase কনসোলের। দেখুন আপনার ক্লায়েন্ট প্রমাণ করা হচ্ছে কিভাবে আপনার অ্যাপ্লিকেশনের রয়েছে SHA-1 আঙুলের ছাপ পেতে বিস্তারিত।

  5. আপনি সাইন-ইন ফেসবুক বা টুইটার সঙ্গে, স্ট্রিং রিসোর্স যোগ সমর্থন করেন 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 ভ্রমণ ফলাফলের চুক্তি জন্য একটি কলব্যাক খাতাপত্র:

জাভা

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

কোটলিন+কেটিএক্স

// See: https://developer.android.com/training/basics/intents/result
private val signInLauncher = registerForActivityResult(
        FirebaseAuthUIActivityResultContract()
) { res ->
    this.onSignInResult(res)
}

FirebaseUI সাইন ইন প্রবাহ বন্ধ করতে, আপনার পছন্দের সাইন-ইন পদ্ধতিগুলির সাথে একটি সাইন ইন অভিপ্রায় তৈরি করুন:

জাভা

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

কোটলিন+কেটিএক্স

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

যখন সাইন-ইন ফ্লো সম্পূর্ণ হলে, আপনি ফলাফলের পাবেন onSignInResult :

জাভা

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

কোটলিন+কেটিএক্স

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

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

  1. ইন Firebase কনসোল , প্রমাণীকরণ অধ্যায় খুলুন। পদ্ধতি ট্যাবে সাইন অন, ইমেইল / পাসওয়ার্ড প্রদানকারী সক্রিয় করুন। মনে রাখবেন যে ইমেল লিঙ্ক সাইন-ইন ব্যবহার করতে ইমেইল/পাসওয়ার্ড সাইন-ইন সক্রিয় করতে হবে।

  2. একই বিভাগে, ইমেইল লিঙ্ক (passwordless সাইন-ইন) মেথড সাইন-ইন সক্রিয় এবং সংরক্ষণ ক্লিক করুন।

  3. এছাড়াও আপনি ব্যবহারের ইমেল-লিঙ্ক চিহ্ন Firebase ডায়নামিক লিংক সক্রিয় করতে হবে। ইন Firebase কনসোল , ডায়নামিক লিঙ্কে ক্লিক করুন ন্যাভিগেশন বার ব্যস্ত অধীনে। শুরু করা এ ক্লিক করুন এবং একটি ডোমেন যোগ করুন। আপনি এখানে যে ডোমেইনটি বেছে নিয়েছেন তা আপনার ব্যবহারকারীদের পাঠানো ইমেল লিঙ্কগুলিতে প্রতিফলিত হবে।

  4. আপনি কল করে FirebaseUI মধ্যে ইমেইল লিঙ্ক চিহ্ন সক্ষম করতে পারেন enableEmailLinkSignIn একটি অন EmailBuilder উদাহরণস্বরূপ। এছাড়াও আপনি একটি বৈধ প্রদান করতে হবে ActionCodeSettings সঙ্গে বস্তুর setHandleCodeInApp সত্যতে সেট। উপরন্তু, আপনি প্রয়োজন পরিচ্ছন্ন তালিকায় আপনি যে URL টি পাস setUrl , যা করা সম্ভব Firebase কনসোল , প্রমাণীকরণ অধীনে -> পদ্ধতি সাইন ইন -> অনুমোদিত ডোমেনগুলি।

    জাভা

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

    কোটলিন+কেটিএক্স

    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)
  5. আপনি যদি একটি নির্দিষ্ট কার্যকলাপ লিংকে ধরতে চান, পদক্ষেপ রূপরেখা অনুসরণ করুন এখানে । অন্যথায়, লিঙ্কটি আপনার লঞ্চার কার্যকলাপে পুনirectনির্দেশিত হবে।

  6. একবার আপনি ডিপ লিঙ্কটি ধরলে, আপনাকে যাচাই করতে কল করতে হবে যে আমরা এটি আপনার জন্য পরিচালনা করতে পারি। আমরা যদি করতে পারেন, তারপর আপনি মাধ্যমে আমাদের কাছে পাস করতে হবে setEmailLink

    জাভা

    if (AuthUI.canHandleIntent(getIntent())) {
        if (getIntent().getExtras() == null) {
            return;
        }
        String link = getIntent().getExtras().getString(ExtraConstants.EMAIL_LINK_SIGN_IN);
        if (link != null) {
            Intent signInIntent = AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setEmailLink(link)
                    .setAvailableProviders(providers)
                    .build();
            signInLauncher.launch(signInIntent);
        }
    }

    কোটলিন+কেটিএক্স

    if (AuthUI.canHandleIntent(intent)) {
        val extras = intent.extras ?: return
        val link = extras.getString(ExtraConstants.EMAIL_LINK_SIGN_IN)
        if (link != null) {
            val signInIntent = AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setEmailLink(link)
                    .setAvailableProviders(providers)
                    .build()
            signInLauncher.launch(signInIntent)
        }
    }
  7. ঐচ্ছিক ক্রস ডিভাইস ইমেইল লিঙ্ক সাইন ইন সমর্থিত, যার মানে লিঙ্কটি আপনার Android অ্যাপ্লিকেশান মাধ্যমে পাঠানো আপনার ওয়েব বা iOS অ্যাপ উপর লগ ইন করার ব্যবহার করা যাবে। ডিফল্টরূপে, ক্রস ডিভাইস সমর্থন সক্ষম করা হয়। আপনি কল করে এটা নিষ্ক্রিয় করতে পারেন setForceSameDevice উপর EmailBuilder উদাহরণস্বরূপ।

    দেখুন FirebaseUI-ওয়েব এবং FirebaseUI-আইওএস আরও তথ্যের জন্য।

সাইন আউট

ফায়ারবেস ইউআই ফায়ারবেস প্রমাণীকরণের পাশাপাশি সকল সামাজিক পরিচয় প্রদানকারী থেকে সাইন আউট করার সুবিধাজনক পদ্ধতি প্রদান করে:

জাভা

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

কোটলিন+কেটিএক্স

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

আপনি ব্যবহারকারীর অ্যাকাউন্ট সম্পূর্ণরূপে মুছে ফেলতে পারেন:

জাভা

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

কোটলিন+কেটিএক্স

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

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

ডিফল্টরূপে FirebaseUI তাদের জন্য AppCompat ব্যবহার করে, যার মানে এটা স্বাভাবিকভাবেই আপনার অ্যাপের কালার স্কিম গ্রহণ করবে। আপনি আরও স্বনির্ধারণ প্রয়োজন হলে আপনি একটি থিম এবং একটি লোগো পাস করতে পারেন সাইন-ইন Intent রচয়িতা:

জাভা

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

কোটলিন+কেটিএক্স

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)

আপনি একটি কাস্টম গোপনীয়তা নীতি এবং পরিষেবার শর্তাবলীও সেট করতে পারেন:

জাভা

Intent signInIntent = AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(providers)
        .setTosAndPrivacyPolicyUrls(
                "https://example.com/terms.html",
                "https://example.com/privacy.html")
        .build();
signInLauncher.launch(signInIntent);

কোটলিন+কেটিএক্স

val signInIntent = AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(providers)
        .setTosAndPrivacyPolicyUrls(
                "https://example.com/terms.html",
                "https://example.com/privacy.html")
        .build()
signInLauncher.launch(signInIntent)

পরবর্তী পদক্ষেপ

  • ব্যবহার করে এবং FirebaseUI কাস্টমাইজ সম্পর্কে আরো তথ্যের জন্য, দেখুন README GitHub থেকে ফাইল।
  • আপনি FirebaseUI মধ্যে একটি বিষয় খুঁজে এটি প্রতিবেদন করতে চাই করেন, ব্যবহার GitHub ইস্যু যে ব্যক্তি অনুসরণ করে