অ্যান্ড্রয়েডে বেনামে Firebase দিয়ে প্রমাণীকরণ করুন

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

শুরু করার আগে

  1. যদি আগে থেকে না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রজেক্টে ফায়ারবেস যোগ করুন
  2. আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত <project>/<app-module>/build.gradle.kts অথবা <project>/<app-module>/build.gradle ), অ্যান্ড্রয়েডের জন্য Firebase Authentication লাইব্রেরির ডিপেন্ডেন্সি যোগ করুন। লাইব্রেরির ভার্সনিং নিয়ন্ত্রণের জন্য আমরা Firebase Android BoM ব্যবহার করার পরামর্শ দিই।
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.11.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 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:24.0.1")
    }
  3. আপনি যদি এখনও আপনার অ্যাপটিকে আপনার ফায়ারবেস প্রজেক্টের সাথে সংযুক্ত না করে থাকেন, তাহলে Firebase কনসোল থেকে তা করে নিন।
  4. বেনামী প্রমাণীকরণ সক্ষম করুন:
    1. Firebase কনসোলে , Auth সেকশনটি খুলুন।
    2. সাইন-ইন পদ্ধতি পেজে, বেনামী সাইন-ইন পদ্ধতিটি সক্রিয় করুন।
    3. ঐচ্ছিক : আপনি যদি আপনার প্রজেক্টকে Firebase Authentication with Identity Platform এ আপগ্রেড করে থাকেন, তাহলে আপনি অটোমেটিক ক্লিন-আপ চালু করতে পারেন। আপনি যখন এই সেটিংটি চালু করবেন, তখন ৩০ দিনের বেশি পুরোনো অ্যানোনিমাস অ্যাকাউন্টগুলো স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে। যে প্রজেক্টগুলোতে অটোমেটিক ক্লিন-আপ চালু করা আছে, সেখানে অ্যানোনিমাস অথেন্টিকেশন আর ব্যবহারের সীমা বা বিলিং কোটার জন্য গণনা করা হবে না। অটোমেটিক ক্লিন-আপ দেখুন।

ফায়ারবেসের মাধ্যমে বেনামে প্রমাণীকরণ করুন

যখন কোনো সাইন-আউট করা ব্যবহারকারী অ্যাপের এমন কোনো ফিচার ব্যবহার করেন যার জন্য 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 মেথডগুলোর কোনো একটি কল করা পর্যন্ত (কিন্তু সেটি বাদে) ব্যবহারকারীর অথেনটিকেশন প্রোভাইডারের জন্য সাইন-ইন প্রক্রিয়াটি সম্পন্ন করুন। উদাহরণস্বরূপ, ব্যবহারকারীর গুগল আইডি টোকেন, ফেসবুক অ্যাক্সেস টোকেন, অথবা ইমেল অ্যাড্রেস এবং পাসওয়ার্ড সংগ্রহ করুন।
  2. নতুন অথেন্টিকেশন প্রোভাইডারের জন্য একটি AuthCredential সংগ্রহ করুন:

    গুগল সাইন-ইন

    Kotlin

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
    ফেসবুক লগইন

    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 Authentication with Identity Platform এ আপগ্রেড করে থাকেন, তাহলে আপনি ‘ক্লাউড লগিং’ -এ is_anon দ্বারা ফিল্টার করতে পারেন।

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

এখন যেহেতু ব্যবহারকারীরা ফায়ারবেসের মাধ্যমে প্রমাণীকরণ করতে পারে, আপনি ফায়ারবেস রুলস ব্যবহার করে আপনার ফায়ারবেস ডাটাবেসে থাকা ডেটাতে তাদের অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন।