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

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

আপনি শুরু করার আগে

  1. যদি আপনি ইতিমধ্যেই না করে থাকেন তাহলে আপনার Android প্রকল্পে Firebase যোগ করুন

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

    মনে রাখবেন যে আপনি যদি আপনার অ্যাপে একাধিক ফায়ারবেস লাইব্রেরি ব্যবহার করেন, আমরা দৃঢ়ভাবে লাইব্রেরি সংস্করণগুলি পরিচালনা করতে 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:23.0.0")
    }
    একটি কোটলিন-নির্দিষ্ট লাইব্রেরি মডিউল খুঁজছেন? অক্টোবর 2023 থেকে শুরু হচ্ছে ( Firebase BoM 32.5.0) , Kotlin এবং Java ডেভেলপাররা প্রধান লাইব্রেরি মডিউলের উপর নির্ভর করতে পারে (বিশদ বিবরণের জন্য, এই উদ্যোগ সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন দেখুন)।

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

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

  1. আপনার সাইন-আপ কার্যকলাপের onCreate পদ্ধতিতে, FirebaseAuth অবজেক্টের ভাগ করা উদাহরণ পান:

    Kotlin+KTX

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

    Java

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

    Kotlin+KTX

    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+KTX

    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+KTX

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

    Java

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

    Kotlin+KTX

    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+KTX

    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 পাসওয়ার্ড নীতি নিম্নলিখিত পাসওয়ার্ড প্রয়োজনীয়তা সমর্থন করে:

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

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

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

  • নন-আলফানিউমেরিক অক্ষর প্রয়োজন

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

  • ন্যূনতম পাসওয়ার্ড দৈর্ঘ্য (6 থেকে 30 অক্ষর পর্যন্ত; ডিফল্ট 6 পর্যন্ত)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kotlin+KTX

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();