Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

Android पर एक खाते में कई प्रामाणिक प्रदाता लिंक करें

आप उपयोगकर्ताओं को किसी मौजूदा उपयोगकर्ता खाते में कई प्रदाता प्रदाता को प्रमाणित करके अपने ऐप में साइन इन करने की अनुमति दे सकते हैं। उपयोगकर्ताओं को उसी Firebase उपयोगकर्ता आईडी द्वारा पहचाना जा सकता है, भले ही वह उस प्रमाणीकरण प्रदाता का उपयोग करता हो, जिसमें वे साइन इन करते थे। उदाहरण के लिए, पासवर्ड के साथ साइन इन करने वाला उपयोगकर्ता Google खाते को लिंक कर सकता है और भविष्य में किसी भी विधि से साइन इन कर सकता है। या, एक अनाम उपयोगकर्ता एक फेसबुक खाते को लिंक कर सकता है और फिर, बाद में, अपने ऐप का उपयोग जारी रखने के लिए फेसबुक के साथ साइन इन कर सकता है।

शुरू करने से पहले

अपने ऐप में दो या अधिक प्रमाणीकरण प्रदाताओं (संभवतः अनाम प्रमाणीकरण सहित) के लिए समर्थन जोड़ें।

किसी मौजूदा उपयोगकर्ता खाते में प्रदाता प्रदाता क्रेडेंशियल्स लिंक करने के लिए:

  1. किसी भी प्रमाणीकरण प्रदाता या विधि का उपयोग करके उपयोगकर्ता में साइन इन करें।
  2. नए प्रमाणीकरण प्रदाता के लिए साइन-इन प्रवाह को पूरा करें, लेकिन FirebaseAuth.signInWith विधियों में से एक को शामिल करते हुए। उदाहरण के लिए, उपयोगकर्ता की Google आईडी टोकन, फेसबुक एक्सेस टोकन या ईमेल और पासवर्ड प्राप्त करें।
  3. एक हो जाओ AuthCredential नया प्रमाणीकरण प्रदाता के लिए:

    Google साइन-इन

    जावा

    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. उपयोगकर्ता द्वारा linkWithCredential किए गए उपयोगकर्ता linkWithCredential पद्धति में AuthCredential ऑब्जेक्ट पास करें:

    जावा

    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 लिए कॉल सफल होता है, तो उपयोगकर्ता अब किसी भी लिंक किए गए प्रमाणीकरण प्रदाता का उपयोग करके साइन इन कर सकता है और उसी फायरबेस डेटा का उपयोग कर सकता है।

आप किसी खाते से किसी अन्य प्रदाता को अनलिंक कर सकते हैं, ताकि उपयोगकर्ता अब उस प्रदाता के साथ साइन इन न कर सके।

किसी उपयोगकर्ता खाते से किसी अन्य प्रदाता को unlink करने के लिए, प्रदाता आईडी को unlink विधि से पास करें। आप 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
                // ...
            }
        }