पुष्टि करने वाली सेवा देने वाली कंपनी के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करके, उपयोगकर्ताओं को पुष्टि करने वाली कई सेवाओं का इस्तेमाल करके आपके ऐप्लिकेशन में साइन इन करने की अनुमति दी जा सकती है. उपयोगकर्ताओं की पहचान, एक ही Firebase यूज़र आईडी से की जा सकती है. भले ही, उन्होंने साइन इन करने के लिए पुष्टि करने वाली सेवा देने वाली किसी भी कंपनी का इस्तेमाल किया हो. उदाहरण के लिए, पासवर्ड से साइन इन करने वाला उपयोगकर्ता, Google खाता लिंक कर सकता है. साथ ही, वह आने वाले समय में दोनों में से किसी भी तरीके से साइन इन कर सकता है. इसके अलावा, कोई ऐसा उपयोगकर्ता जो अपनी पहचान छिपाकर ऐप्लिकेशन का इस्तेमाल कर रहा है, वह बाद में Facebook खाता लिंक कर सकता है. इसके बाद, आपके ऐप्लिकेशन का इस्तेमाल जारी रखने के लिए, Facebook खाते से साइन इन कर सकता है.
शुरू करने से पहले
अपने ऐप्लिकेशन में, पुष्टि करने की सेवा देने वाली दो या उससे ज़्यादा कंपनियों के साथ काम करने की सुविधा जोड़ें. इसमें, बिना पहचान ज़ाहिर किए पुष्टि करने की सुविधा भी शामिल हो सकती है.
पुष्टि करने वाली सेवा देने वाली कंपनी के क्रेडेंशियल को उपयोगकर्ता खाते से लिंक करना
पुष्टि करने वाले प्रोवाइडर के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करने के लिए:
- पुष्टि करने वाली किसी भी सेवा या तरीके का इस्तेमाल करके, उपयोगकर्ता को साइन इन कराएं.
- पुष्टि करने की सेवा देने वाली नई कंपनी के लिए, साइन इन फ़्लो को पूरा करें. हालांकि,
FirebaseAuth.signInWith
में से किसी एक तरीके को कॉल करने तक ही सीमित रहें. उदाहरण के लिए, उपयोगकर्ता का Google आईडी टोकन, Facebook ऐक्सेस टोकन या ईमेल और पासवर्ड पाएं. पुष्टि करने वाली नई सेवा के लिए
AuthCredential
पाएं:Google साइन-इन
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
Facebook Login
val credential = FacebookAuthProvider.getCredential(token.token)
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
ईमेल-पासवर्ड से साइन-इन करना
val credential = EmailAuthProvider.getCredential(email, password)
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
साइन इन किए हुए उपयोगकर्ता के
linkWithCredential
तरीके मेंAuthCredential
ऑब्जेक्ट को पास करें: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) } }
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
को कॉल नहीं किया जा सकेगा. इस स्थिति में, आपको अपने ऐप्लिकेशन के हिसाब से, खातों और उनसे जुड़े डेटा को मर्ज करना होगा:val prevUser = auth.currentUser auth.signInWithCredential(credential) .addOnSuccessListener { result -> val currentUser = result.user // Merge prevUser and currentUser accounts and data // ... } .addOnFailureListener { // ... }
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
को कॉल करके, उपयोगकर्ता से लिंक किए गए पुष्टि करने वाले प्रोवाइडर के आईडी देखे जा सकते हैं.
Firebase.auth.currentUser!!.unlink(providerId) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Auth provider unlinked from account // ... } }
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 // ... } } });