Android पर पुष्टि करने वाली एक से ज़्यादा कंपनियों को किसी खाते से लिंक करना

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

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

पुष्टि करने की सुविधा देने वाली दो या इससे ज़्यादा कंपनियों के लिए सहायता जोड़ें (इनमें ये शामिल हो सकते हैं पहचान छिपाकर पुष्टि करने की सुविधा).

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

  1. पुष्टि करने वाली किसी भी कंपनी या तरीके का इस्तेमाल करके, उपयोगकर्ता के खाते में साइन इन करें.
  2. पुष्टि करने की सेवा देने वाली नई कंपनी के लिए साइन-इन फ़्लो को पूरा करें. हालांकि, ऐसा नहीं किया जा सकता इसके अलावा, FirebaseAuth.signInWith के तरीकों में से किसी एक को कॉल करना भी शामिल है. उदाहरण के लिए, उपयोगकर्ता का Google आईडी टोकन, Facebook ऐक्सेस टोकन या ईमेल और पासवर्ड.
  3. पुष्टि करने वाली नई कंपनी के लिए, AuthCredential डाउनलोड करें:

    Google साइन-इन

    Kotlin+KTX

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
    Facebook में लॉगिन करें

    Kotlin+KTX

    val credential = FacebookAuthProvider.getCredential(token.token)

    Java

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

    Kotlin+KTX

    val credential = EmailAuthProvider.getCredential(email, password)

    Java

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);
  4. साइन इन किए हुए उपयोगकर्ता को AuthCredential ऑब्जेक्ट दें linkWithCredential तरीका:

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

    Java

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

    अगर क्रेडेंशियल नीचे दिए गए हैं, तो linkWithCredential को कॉल नहीं किया जा सकेगा पहले से किसी अन्य उपयोगकर्ता खाते से लिंक है. ऐसी स्थिति में, आपके समाचार संगठन को अपने ऐप्लिकेशन के हिसाब से, खातों और उनसे जुड़े डेटा को मर्ज करना:

    Kotlin+KTX

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

    Java

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

अगर linkWithCredential पर कॉल पूरा होता है, तो उपयोगकर्ता अब इसका इस्तेमाल करके साइन इन कर सकता है साथ ही, आपका Firebase डेटा ऐक्सेस कर सकता है.

आप पुष्टि करने वाली कंपनी को किसी खाते से अलग कर सकते हैं, ताकि उपयोगकर्ता कोई उस कंपनी के खाते में साइन इन करें.

पुष्टि करने वाली कंपनी को उपयोगकर्ता खाते से अनलिंक करने के लिए, सेवा देने वाली कंपनी का आईडी unlink तरीका. आपको पुष्टि करने वाली कंपनियों के आईडी मिल सकते हैं को कॉल करके किसी उपयोगकर्ता से लिंक किया गया getProviderData.

Kotlin+KTX

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

Java

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