একটি কাস্টম প্রমাণীকরণ সিস্টেম ব্যবহার করে অ্যান্ড্রয়েডে ফায়ারবেসের সাথে প্রমাণীকরণ করুন

ব্যবহারকারী সফলভাবে সাইন ইন করলে কাস্টম স্বাক্ষরিত টোকেন তৈরি করার জন্য আপনার অথেনটিকেশন সার্ভারটি পরিবর্তন করে আপনি একটি কাস্টম অথেনটিকেশন সিস্টেমের সাথে Firebase Authentication একীভূত করতে পারেন। আপনার অ্যাপ এই টোকেনটি গ্রহণ করে এবং ফায়ারবেসের সাথে অথেনটিকেশনের জন্য এটি ব্যবহার করে।

শুরু করার আগে

  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. আপনার প্রোজেক্টের সার্ভার কীগুলো সংগ্রহ করুন:
    1. আপনার প্রোজেক্টের সেটিংসে থাকা সার্ভিস অ্যাকাউন্টস পেজে যান।
    2. সার্ভিস অ্যাকাউন্টস পেইজের ফায়ারবেস অ্যাডমিন এসডিকে সেকশনের একদম নিচে থাকা ‘জেনারেট নিউ প্রাইভেট কী’ বাটনে ক্লিক করুন।
    3. নতুন সার্ভিস অ্যাকাউন্টের পাবলিক/প্রাইভেট কী পেয়ারটি আপনার কম্পিউটারে স্বয়ংক্রিয়ভাবে সেভ হয়ে যায়। এই ফাইলটি আপনার অথেনটিকেশন সার্ভারে কপি করুন।

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

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

    Kotlin

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

    Java

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

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

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

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

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

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

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

Kotlin

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();