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.1.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 পদ্ধতি ব্যবহার করতে পারবেন।

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

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

  1. ব্যবহারকারী সাইন-আপ করলে, ব্যবহারকারীর প্রমাণীকরণ প্রদানকারীর জন্য সাইন-ইন ফ্লো সম্পূর্ণ করুন, তবে FirebaseAuth.signInWith পদ্ধতির একটি কল করা অন্তর্ভুক্ত নয়। যেমন, ব্যবহারকারীর Google ID টোকেন, 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-এ আপগ্রেড করে থাকলে, আপনি Cloud Logging-এ is_anon-এর মাধ্যমে ফিল্টার করতে পারবেন।

পরবর্তী ধাপ

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