गूगल काले समुदायों के लिए जातीय इक्विटी को आगे बढ़ाने के लिए प्रतिबद्ध है। देखो कैसे।
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

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

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

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

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

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

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

    Google साइन-इन

    जावा

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

    Kotlin + KTX

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
    फेसबुक लोगिन

    जावा

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

    Kotlin + KTX

    val credential = FacebookAuthProvider.getCredential(token.token)
    ईमेल-पासवर्ड साइन-इन

    जावा

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

    Kotlin + KTX

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

    Kotlin + KTX

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

    Kotlin + KTX

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

करने के लिए कॉल तो linkWithCredential सफल होता है, उपयोगकर्ता अब किसी भी लिंक किए प्रमाणीकरण प्रदाता और पहुँच ही Firebase डेटा का उपयोग करके प्रवेश कर सकते हैं।

आप किसी खाते से प्रमाणन प्रदाता असंबद्ध कर सकते हैं, ताकि उपयोगकर्ता अब कि प्रदाता के साथ प्रवेश कर सकते हैं।

एक उपयोगकर्ता खाते से एक प्रमाणन प्रदाता लिंक हटाने के लिए, करने के लिए प्रदाता आईडी पारित 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
                    // ...
                }
            }
        });

Kotlin + KTX

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