आप उपयोगकर्ताओं को पुष्टि करने वाली कई कंपनियों का इस्तेमाल करके, अपने ऐप्लिकेशन में साइन इन करने की अनुमति दे सकते हैं. ऐसा करने के लिए, आपको पुष्टि करने वाली कंपनी के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करना होगा. उपयोगकर्ताओं को एक ही Firebase यूज़र आईडी से पहचाना जा सकता है. भले ही, उन्होंने साइन इन करने के लिए पुष्टि करने वाली किसी भी कंपनी का इस्तेमाल किया हो. उदाहरण के लिए, पासवर्ड से साइन इन करने वाला उपयोगकर्ता Google खाता लिंक कर सकता है और आने वाले समय में किसी भी तरीके से साइन इन कर सकता है. इसके अलावा, पहचान छिपाने वाला उपयोगकर्ता कोई Facebook खाता लिंक करके, बाद में Facebook से साइन इन करके, अपने ऐप्लिकेशन का इस्तेमाल जारी रख सकता है.
शुरू करने से पहले
अपने ऐप्लिकेशन में पुष्टि करने की सुविधा देने वाली दो या इससे ज़्यादा कंपनियों के लिए सहायता जोड़ें. इसमें पहचान छिपाकर पुष्टि करने की सुविधा भी शामिल हो सकती है.
पुष्टि करने वाली कंपनी के क्रेडेंशियल को किसी उपयोगकर्ता खाते से लिंक करें
पुष्टि करने वाली कंपनी के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करने के लिए:
- पुष्टि करने वाली किसी भी कंपनी या तरीके का इस्तेमाल करके, उपयोगकर्ता के खाते में साइन इन करें.
- पुष्टि करने वाली नई कंपनी के लिए, साइन-इन फ़्लो को पूरा करें. हालांकि,
FirebaseAuth.signInWith
के किसी एक तरीके का इस्तेमाल करके ऐसा करना ज़रूरी नहीं है. उदाहरण के लिए, उपयोगकर्ता का Google आईडी टोकन, Facebook का ऐक्सेस टोकन या ईमेल और पासवर्ड पाएं. पुष्टि करने वाली नई कंपनी के लिए,
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);
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 // ... } } });