Android-এ Firebase-এর মাধ্যমে বেনামে যাচাইকরণ

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

শুরু করার আগে

  1. আপনি এখনও না করে থাকলে, আপনার Android প্রোজেক্টে Firebase যোগ করুন।
  2. আপনার মডিউল (অ্যাপ-লেভেল) Gradle ফাইলে (সাধারণত <project>/<app-module>/build.gradle.kts বা <project>/<app-module>/build.gradle), Android-এর জন্য Firebase Authentication লাইব্রেরির ডিপেন্ডেন্সি যোগ করুন। লাইব্রেরি ভার্সনিং কন্ট্রোল করতে Firebase Android BoM ব্যবহার করার সাজেশন দিই।
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.0"))
    
        // Add the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-auth")
    }

    Firebase Android BoM ব্যবহার করার মাধ্যমে, আপনার অ্যাপ সবসময় Firebase Android লাইব্রেরির মানানসই ভার্সন ব্যবহার করবে।

    (বিকল্প)  BoM ব্যবহার না করে Firebase লাইব্রেরি নির্ভরতা যোগ করুন

    আপনি Firebase BoM ব্যবহার না করার বিকল্প বেছে নিলে, আপনাকে অবশ্যই এর ডিপেন্ডেন্সি লাইনে প্রতিটি Firebase লাইব্রেরি ভার্সন উল্লেখ করতে হবে।

    মনে রাখবেন, আপনার অ্যাপে একাধিক Firebase লাইব্রেরি ব্যবহার করলে, লাইব্রেরি ভার্সন ম্যানেজ করার জন্য আমরা BoM ব্যবহার করার জন্য অত্যন্ত সাজেস্ট করি, এটি নিশ্চিত করে যে সব ভার্সনই মানানসই।

    dependencies {
        // Add the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-auth:25.0.0")
    }
  3. আপনি এখনও Firebase প্রোজেক্টের সাথে অ্যাপ কানেক্ট না করে থাকলে, এটি Firebase কনসোল থেকে করুন।
  4. পরিচয় গোপন রেখে যাচাইকরণ চালু করুন:
    1. Firebase কনসোলে গিয়ে নিরাপত্তা > যাচাইকরণ বিকল্পে যান।
    2. সাইন-ইন পদ্ধতি ট্যাবে, অনামিকা সাইন-ইন প্রদানকারী চালু করুন।
    3. ঐচ্ছিক: আপনার প্রোজেক্ট Firebase Authentication with Identity Platform-এ আপগ্রেড করে থাকলে, আপনি অটোমেটিক ক্লিন-আপ চালু করতে পারবেন। আপনি এই সেটিং চালু করলে, ৩০ দিনের বেশি পুরনো অপরিচিত অ্যাকাউন্ট অটোমেটিক মুছে যাবে। অটোমেটিক ক্লিন-আপ চালু করা প্রোজেক্টে, অ্যাননিমাস অথেন্টিকেশন আর ব্যবহারের সীমা বা বিলিং কোটার মধ্যে গণনা করা হবে না। দেখুন অটোমেটিক ক্লিন-আপ।

পরিচয় গোপন রেখে Firebase-এর মাধ্যমে যাচাইকরণ করা

সাইন-আউট করা কোনও ব্যবহারকারী Firebase-এর মাধ্যমে যাচাইকরণ প্রয়োজন এমন কোনও অ্যাপ ফিচার ব্যবহার করলে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করে ব্যবহারকারীকে বেনামে সাইন-ইন করান:

  1. আপনার অ্যাক্টিভিটির onCreate পদ্ধতিতে, FirebaseAuth অবজেক্টের শেয়ার করা ইনস্ট্যান্স পান:

    Kotlin

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. আপনার অ্যাক্টিভিটি শুরু করার সময়, ব্যবহারকারী বর্তমানে সাইন-ইন করে আছেন কিনা তা চেক করুন:

    Kotlin

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        updateUI(currentUser)
    }

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }
  3. সবশেষে, signInAnonymously কল করে বেনামী ব্যবহারকারী হিসেবে সাইন-ইন করুন:

    Kotlin

    auth.signInAnonymously()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "signInAnonymously:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInAnonymously:failure", task.exception)
                Toast.makeText(
                    baseContext,
                    "Authentication failed.",
                    Toast.LENGTH_SHORT,
                ).show()
                updateUI(null)
            }
        }

    Java

    mAuth.signInAnonymously()
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInAnonymously:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInAnonymously:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
    সাইন-ইন সফল হলে, ব্যবহারকারীর অ্যাকাউন্ট ডেটা পেতে আপনি getCurrentUser পদ্ধতি ব্যবহার করতে পারবেন।

অনামonymous অ্যাকাউন্টকে স্থায়ী অ্যাকাউন্টে পরিবর্তন করা

কোনও বেনামী ব্যবহারকারী আপনার অ্যাপে সাইন-আপ করলে, আপনি হয়ত তাকে তার নতুন অ্যাকাউন্টের মাধ্যমে কাজ চালিয়ে যেতে দিতে চাইবেন—যেমন, আপনি হয়ত সাইন-আপ করার আগে ব্যবহারকারী যেসব আইটেম তার শপিং কার্টে যোগ করেছেন সেগুলি তার নতুন অ্যাকাউন্টের শপিং কার্টে উপলভ্য করতে চাইবেন। এটি করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:

  1. ব্যবহারকারী সাইন-আপ করলে, ব্যবহারকারীর যাচাইকরণ প্রদানকারীর জন্য সাইন-ইন ফ্লো সম্পূর্ণ করুন, তবে এর মধ্যে FirebaseAuth.signInWith পদ্ধতিগুলির একটি কল করা অন্তর্ভুক্ত নয়। যেমন, ব্যবহারকারীর Google আইডি টোকেন, Facebook অ্যাক্সেস টোকেন অথবা ইমেল আইডি ও পাসওয়ার্ড পান।
  2. নতুন যাচাইকরণ পরিষেবা প্রদানকারীর জন্য AuthCredential পান:

    Google সাইন-ইন

    Kotlin

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
    Facebook লগ-ইন

    Kotlin

    val credential = FacebookAuthProvider.getCredential(token.token)

    Java

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    ইমেল-পাসওয়ার্ড দিয়ে সাইন-ইন করা

    Kotlin

    val credential = EmailAuthProvider.getCredential(email, password)

    Java

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);
  3. সাইন-ইন করা ব্যবহারকারীর linkWithCredential পদ্ধতিতে AuthCredential অবজেক্ট পাস করুন:

    Kotlin

    auth.currentUser!!.linkWithCredential(credential)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "linkWithCredential:success")
                val user = task.result?.user
                updateUI(user)
            } else {
                Log.w(TAG, "linkWithCredential:failure", task.exception)
                Toast.makeText(
                    baseContext,
                    "Authentication failed.",
                    Toast.LENGTH_SHORT,
                ).show()
                updateUI(null)
            }
        }

    Java

    mAuth.getCurrentUser().linkWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "linkWithCredential:success");
                        FirebaseUser user = task.getResult().getUser();
                        updateUI(user);
                    } else {
                        Log.w(TAG, "linkWithCredential:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });

linkWithCredential কল করা সফল হলে, ব্যবহারকারীর নতুন অ্যাকাউন্ট অনামনিমাস অ্যাকাউন্টের Firebase ডেটা অ্যাক্সেস করতে পারবে।

অটোমেটিক ক্লিন-আপ

আপনার প্রোজেক্ট Firebase Authentication with Identity Platform-এ আপগ্রেড করে থাকলে, আপনি Firebase কনসোলে অটোমেটিক ক্লিন-আপ চালু করতে পারবেন। এই ফিচার চালু করলে, আপনি Firebase-কে ৩০ দিনের বেশি পুরনো অনামিকা অ্যাকাউন্ট অটোমেটিক মুছে দেওয়ার অনুমতি দেন। অটোমেটিক পরিষ্কার করার সুবিধা চালু থাকা প্রোজেক্টে, পরিচয় গোপন রেখে করা যাচাইকরণ ব্যবহারের সীমা বা বিলিং কোটার মধ্যে গণনা করা হবে না।

  • অটোমেটিক ক্লিন-আপ চালু করার পরে তৈরি করা যেকোনও বেনামী অ্যাকাউন্ট তৈরি করার ৩০ দিন পরে যেকোনও সময় অটোমেটিক মুছে ফেলা হতে পারে।
  • অটোমেটিক ক্লিন-আপ চালু করার ৩০ দিন পরে আগে থেকে থাকা বেনামী অ্যাকাউন্ট অটোমেটিক মুছে দেওয়ার জন্য উপযুক্ত হবে।
  • আপনি অটোমেটিক ক্লিন-আপ বন্ধ করে দিলে, মুছে ফেলার জন্য শিডিউল করা যেকোনও বেনামী অ্যাকাউন্ট মুছে ফেলার জন্য শিডিউল করা থাকবে।
  • আপনি কোনও সাইন-ইন পদ্ধতির সাথে লিঙ্ক করে কোনও বেনামী অ্যাকাউন্ট "আপগ্রেড" করলে, অ্যাকাউন্টটি অটোমেটিক মুছে যাবে না।

এই ফিচার চালু করার আগে কতজন ব্যবহারকারী প্রভাবিত হবেন তা দেখতে চাইলে এবং আপনি যদি নিজের প্রোজেক্ট Firebase Authentication with Identity Platform-এ আপগ্রেড করে থাকেন, তাহলে আপনি is_anon-এর মাধ্যমে ক্লাউড লগিং ফিল্টার করতে পারবেন।

পরবর্তী ধাপ

যেহেতু ব্যবহারকারীরা এখন Firebase-এর মাধ্যমে যাচাই করিয়ে নিতে পারবেন, তাই আপনি Firebase নিয়ম ব্যবহার করে আপনার Firebase ডেটাবেসে ডেটা অ্যাক্সেস করার ব্যাপারে নিয়ন্ত্রণ করতে পারবেন।