Catch up on everthing we announced at this year's Firebase Summit. Learn more

অ্যানড্রয়েডে একাউন্টে একাধিক প্রবন্ধ সরবরাহকারীকে লিঙ্ক করুন

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

তুমি শুরু করার আগে

আপনার অ্যাপে দুই বা ততোধিক প্রমাণীকরণ প্রদানকারীর (সম্ভবত বেনামী প্রমাণীকরণ সহ) সমর্থন যোগ করুন।

একটি বিদ্যমান ব্যবহারকারীর অ্যাকাউন্টের সাথে auth প্রদানকারীর শংসাপত্রগুলি লিঙ্ক করতে:

  1. যেকোন প্রমাণীকরণ প্রদানকারী বা পদ্ধতি ব্যবহার করে ব্যবহারকারীর সাইন ইন করুন।
  2. নতুন প্রমাণীকরণ প্রদানকারী আপ জন্য সাইন-ইন ফ্লো সম্পূর্ণ করুন, কিন্তু সহ না, অপরকে আহ্বানের FirebaseAuth.signInWith পদ্ধতি। উদাহরণস্বরূপ, ব্যবহারকারীর গুগল আইডি টোকেন, ফেসবুক অ্যাক্সেস টোকেন, অথবা ইমেল এবং পাসওয়ার্ড পান।
  3. একটি পান AuthCredential নতুন প্রমাণীকরণ সরবরাহকারীর জন্য:

    গুগল সাইন-ইন

    জাভা

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);

    কোটলিন+কেটিএক্স

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

    জাভা

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());

    কোটলিন+কেটিএক্স

    val credential = FacebookAuthProvider.getCredential(token.token)
    ইমেল-পাসওয়ার্ড সাইন-ইন

    জাভা

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);

    কোটলিন+কেটিএক্স

    val credential = EmailAuthProvider.getCredential(email, password)
  4. পাশ AuthCredential বস্তুর সাইন ইন ব্যবহারকারীর linkWithCredential পদ্ধতি:

    জাভা

    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);
                    }
                }
            });

    কোটলিন+কেটিএক্স

    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)
                }
            }

    থেকে কল linkWithCredential যদি পরিচয়পত্র ইতিমধ্যেই অন্য ব্যবহারকারীর অ্যাকাউন্টের সাথে লিঙ্ক করা হয় ব্যর্থ হবে। এই পরিস্থিতিতে, আপনাকে অবশ্যই আপনার অ্যাপের জন্য উপযুক্ত হিসাবে অ্যাকাউন্ট এবং সংশ্লিষ্ট ডেটা মার্জ করতে হবে:

    জাভা

    FirebaseUser prevUser = FirebaseAuth.getInstance().getCurrentUser();
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    FirebaseUser currentUser = task.getResult().getUser();
                    // Merge prevUser and currentUser accounts and data
                    // ...
                }
            });

    কোটলিন+কেটিএক্স

    val prevUser = auth.currentUser
    auth.signInWithCredential(credential)
            .addOnSuccessListener { result ->
                val currentUser = result.user
                // Merge prevUser and currentUser accounts and data
                // ...
            }
            .addOnFailureListener {
                // ...
            }

থেকে কল তাহলে linkWithCredential সফল, ব্যবহারকারী এখন কোন লিঙ্ক প্রমাণীকরণ প্রদানকারী এবং অ্যাক্সেস একই Firebase ডেটা ব্যবহার করে সাইন ইন করতে পারেন।

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

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

জাভা

mAuth.getCurrentUser().unlink(providerId)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // Auth provider unlinked from account
                    // ...
                }
            }
        });

কোটলিন+কেটিএক্স

Firebase.auth.currentUser!!.unlink(providerId)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Auth provider unlinked from account
                // ...
            }
        }