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