Android-এ পাসওয়ার্ড-ভিত্তিক অ্যাকাউন্ট ব্যবহার করে Firebase-এর মাধ্যমে প্রমাণীকরণ করুন

আপনার ব্যবহারকারীদের তাদের ইমেল ঠিকানা এবং পাসওয়ার্ড ব্যবহার করে Firebase-এর মাধ্যমে প্রমাণীকরণ করতে এবং আপনার অ্যাপের পাসওয়ার্ড-ভিত্তিক অ্যাকাউন্টগুলি পরিচালনা করতে আপনি Firebase Authentication ব্যবহার করতে পারেন।

শুরু করার আগে

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

  2. যদি আপনি এখনও আপনার অ্যাপটি আপনার Firebase প্রকল্পের সাথে সংযুক্ত না করে থাকেন, তাহলে Firebase কনসোল থেকে তা করুন।
  3. ইমেল/পাসওয়ার্ড সাইন-ইন সক্ষম করুন:
    1. Firebase কনসোলে , Auth বিভাগটি খুলুন।
    2. সাইন ইন পদ্ধতি ট্যাবে, ইমেল/পাসওয়ার্ড সাইন-ইন পদ্ধতি সক্ষম করুন এবং সংরক্ষণ করুন এ ক্লিক করুন।
  4. আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে (সাধারণত <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:34.9.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:24.0.1")
    }

একটি পাসওয়ার্ড-ভিত্তিক অ্যাকাউন্ট তৈরি করুন

পাসওয়ার্ড দিয়ে একটি নতুন ব্যবহারকারী অ্যাকাউন্ট তৈরি করতে, আপনার অ্যাপের সাইন-ইন কার্যকলাপে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  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
        if (currentUser != null) {
            reload()
        }
    }

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if(currentUser != null){
            reload();
        }
    }
  3. যখন একজন নতুন ব্যবহারকারী আপনার অ্যাপের সাইন-আপ ফর্ম ব্যবহার করে সাইন আপ করেন, তখন আপনার অ্যাপের জন্য প্রয়োজনীয় যেকোনো নতুন অ্যাকাউন্ট যাচাইকরণ পদক্ষেপ পূরণ করুন, যেমন নতুন অ্যাকাউন্টের পাসওয়ার্ড সঠিকভাবে টাইপ করা হয়েছে কিনা এবং আপনার জটিলতার প্রয়োজনীয়তা পূরণ করে কিনা তা যাচাই করা।
  4. নতুন ব্যবহারকারীর ইমেল ঠিকানা এবং পাসওয়ার্ড দিয়ে একটি নতুন অ্যাকাউন্ট তৈরি করুন createUserWithEmailAndPassword :

    Kotlin

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

    Java

    mAuth.createUserWithEmailAndPassword(email, password)
            .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, "createUserWithEmail:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "createUserWithEmail:failure", task.getException());
                        Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
    যদি নতুন অ্যাকাউন্ট তৈরি করা হয়, তাহলে ব্যবহারকারীও সাইন ইন করে থাকবেন। কলব্যাকে, আপনি ব্যবহারকারীর অ্যাকাউন্টের ডেটা পেতে getCurrentUser পদ্ধতি ব্যবহার করতে পারেন।

ইমেল ঠিকানা এবং পাসওয়ার্ড দিয়ে একজন ব্যবহারকারীকে সাইন ইন করুন।

পাসওয়ার্ড দিয়ে ব্যবহারকারীকে সাইন ইন করার ধাপগুলি নতুন অ্যাকাউন্ট তৈরি করার ধাপগুলির অনুরূপ। আপনার অ্যাপের সাইন-ইন কার্যকলাপে, নিম্নলিখিতগুলি করুন:

  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
        if (currentUser != null) {
            reload()
        }
    }

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if(currentUser != null){
            reload();
        }
    }
  3. যখন কোনও ব্যবহারকারী আপনার অ্যাপে সাইন ইন করেন, তখন ব্যবহারকারীর ইমেল ঠিকানা এবং পাসওয়ার্ডটি signInWithEmailAndPassword এ পাঠান:

    Kotlin

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

    Java

    mAuth.signInWithEmailAndPassword(email, password)
            .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, "signInWithEmail:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithEmail:failure", task.getException());
                        Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
    সাইন-ইন সফল হলে, আপনি এগিয়ে যাওয়ার জন্য ফিরে আসা FirebaseUser ব্যবহার করতে পারেন।

প্রস্তাবিত: একটি পাসওয়ার্ড নীতি সেট করুন

পাসওয়ার্ড জটিলতার প্রয়োজনীয়তা প্রয়োগ করে আপনি অ্যাকাউন্টের নিরাপত্তা উন্নত করতে পারেন।

আপনার প্রকল্পের জন্য একটি পাসওয়ার্ড নীতি কনফিগার করতে, Firebase কনসোলের প্রমাণীকরণ সেটিংস পৃষ্ঠায় পাসওয়ার্ড নীতি ট্যাবটি খুলুন:

প্রমাণীকরণ সেটিংস

Firebase Authentication পাসওয়ার্ড নীতিগুলি নিম্নলিখিত পাসওয়ার্ডের প্রয়োজনীয়তাগুলিকে সমর্থন করে:

  • ছোট হাতের অক্ষর প্রয়োজন

  • বড় হাতের অক্ষর প্রয়োজন

  • সংখ্যাসূচক অক্ষর প্রয়োজন

  • অ-বর্ণানুক্রমিক অক্ষর প্রয়োজন

    নিম্নলিখিত অক্ষরগুলি অ-বর্ণানুক্রমিক অক্ষরের প্রয়োজনীয়তা পূরণ করে: ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~

  • সর্বনিম্ন পাসওয়ার্ডের দৈর্ঘ্য (৬ থেকে ৩০ অক্ষরের মধ্যে; ডিফল্ট ৬ অক্ষর)

  • সর্বাধিক পাসওয়ার্ডের দৈর্ঘ্য (সর্বোচ্চ দৈর্ঘ্য ৪০৯৬ অক্ষর)

আপনি দুটি মোডে পাসওয়ার্ড নীতি প্রয়োগ সক্ষম করতে পারেন:

  • প্রয়োজন : ব্যবহারকারী আপনার নীতিমালা মেনে চলা পাসওয়ার্ড আপডেট না করা পর্যন্ত সাইন আপ করার প্রচেষ্টা ব্যর্থ হবে।

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

নতুন ব্যবহারকারীদের সর্বদা এমন একটি পাসওয়ার্ড বেছে নিতে হবে যা আপনার নীতি মেনে চলে।

যদি আপনার সক্রিয় ব্যবহারকারী থাকে, তাহলে আমরা সাইন ইন করার সময় জোর করে আপগ্রেড সক্ষম না করার পরামর্শ দিচ্ছি যদি না আপনি এমন ব্যবহারকারীদের অ্যাক্সেস ব্লক করতে চান যাদের পাসওয়ার্ড আপনার নীতি মেনে চলে না। পরিবর্তে, নোটিফাই মোড ব্যবহার করুন, যা ব্যবহারকারীদের তাদের বর্তমান পাসওয়ার্ড দিয়ে সাইন ইন করতে এবং তাদের পাসওয়ার্ডে থাকা প্রয়োজনীয়তাগুলি সম্পর্কে অবহিত করতে দেয়।

প্রস্তাবিত: ইমেল গণনা সুরক্ষা সক্ষম করুন

কিছু Firebase Authentication পদ্ধতি যা ইমেল ঠিকানাগুলিকে প্যারামিটার হিসেবে গ্রহণ করে, নির্দিষ্ট ত্রুটিগুলি ফেলে দেয় যদি ইমেল ঠিকানাটি নিবন্ধিত না থাকে যখন এটি নিবন্ধিত থাকা আবশ্যক (উদাহরণস্বরূপ, একটি ইমেল ঠিকানা এবং পাসওয়ার্ড দিয়ে সাইন ইন করার সময়), অথবা যখন এটি অব্যবহৃত থাকে (উদাহরণস্বরূপ, একজন ব্যবহারকারীর ইমেল ঠিকানা পরিবর্তন করার সময়) নিবন্ধিত থাকে। যদিও এটি ব্যবহারকারীদের নির্দিষ্ট প্রতিকারের পরামর্শ দেওয়ার জন্য সহায়ক হতে পারে, তবে আপনার ব্যবহারকারীদের দ্বারা নিবন্ধিত ইমেল ঠিকানাগুলি আবিষ্কার করার জন্য দূষিত ব্যক্তিরা এটির অপব্যবহারও করতে পারে।

এই ঝুঁকি কমাতে, আমরা আপনাকে Google Cloud gcloud টুল ব্যবহার করে আপনার প্রকল্পের জন্য ইমেল গণনা সুরক্ষা সক্ষম করার পরামর্শ দিচ্ছি। মনে রাখবেন যে এই বৈশিষ্ট্যটি সক্ষম করলে Firebase Authentication এর ত্রুটি প্রতিবেদনের আচরণ পরিবর্তন হয়: নিশ্চিত করুন যে আপনার অ্যাপটি আরও নির্দিষ্ট ত্রুটির উপর নির্ভর করে না।

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

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

  • আপনার অ্যাপগুলিতে, আপনি FirebaseUser অবজেক্ট থেকে ব্যবহারকারীর মৌলিক প্রোফাইল তথ্য পেতে পারেন। ব্যবহারকারীদের পরিচালনা করুন দেখুন।

  • আপনার Firebase Realtime Database এবং Cloud Storage সিকিউরিটি রুলস -এ, আপনি auth ভেরিয়েবল থেকে সাইন-ইন করা ব্যবহারকারীর অনন্য ব্যবহারকারী আইডি পেতে পারেন এবং ব্যবহারকারী কোন ডেটা অ্যাক্সেস করতে পারবেন তা নিয়ন্ত্রণ করতে এটি ব্যবহার করতে পারেন।

আপনি ব্যবহারকারীদের একাধিক প্রমাণীকরণ প্রদানকারী ব্যবহার করে আপনার অ্যাপে সাইন ইন করার অনুমতি দিতে পারেন , একটি বিদ্যমান ব্যবহারকারী অ্যাকাউন্টের সাথে প্রমাণীকরণ প্রদানকারীর শংসাপত্র লিঙ্ক করে।

কোনও ব্যবহারকারীকে সাইন আউট করতে, signOut এ কল করুন:

Kotlin

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();