2016-08-22 6 views
9

वेब के लिए फ़ायरबेस का उपयोग करके मैं सफलतापूर्वक एक अनाम उपयोगकर्ता बना सकता हूं। मैं एक नया ईमेल/पासवर्ड उपयोगकर्ता भी बना सकता हूं। लेकिन जब एक ईमेल/पासवर्ड उपयोगकर्ता के लिए एक अनाम उपयोगकर्ता कन्वर्ट करने के लिए कोशिश कर रहा त्रुटि मिलती है: https://firebase.google.com/docs/auth/web/anonymous-authफायरबेस कनवर्टर अनाम खाता खाता स्थायी खाता त्रुटि

:

auth/provider-already-linked 
User can only be linked to one identity for the given provider. 

Firebase धारा के तहत यहाँ प्रक्रिया दस्तावेजों यहाँ "एक स्थायी खाते में एक गुमनाम खाता कन्वर्ट" खाता लिंक कोड यहां दिया गया है। बेनामी उपयोगकर्ता साइन इन है।

return firebase.auth().createUserWithEmailAndPassword(email, password).then(newUser => { 

    // Credential is being successfully retrieved. Note "any" workaround until typescript updated. 
    let credential = (<any>firebase.auth.EmailAuthProvider).credential(email, password); 

    firebase.auth().currentUser.link(credential) 
     .then(user => { return user; }) 
     .catch(err => console.log(err)); // Returns auth/provider-already-linked error. 
}); 

उत्तर

11

आपको अज्ञात उपयोगकर्ता को अपग्रेड करने के लिए createUserWithEmailAndPassword पर कॉल नहीं करना चाहिए। यह वर्तमान में हस्ताक्षरित अनाम उपयोगकर्ता को साइन आउट करने के लिए एक नए उपयोगकर्ता को साइन अप करेगा।

आपको केवल उपयोगकर्ता का ईमेल और पासवर्ड चाहिए। इसके विपरीत, आईडीपी प्रदाताओं (जैसे Google, फेसबुक), इसके टोकन को उपयोगकर्ता की पहचान करने के लिए अपने पूर्ण साइन प्रवाह को पूरा करने की आवश्यकता होगी। हालांकि, हम इनके लिए linkWithPopup या linkWithRedirect का उपयोग करने की सलाह देते हैं।

उदाहरण:

// (Anonymous user is signed in at that point.) 

// 1. Create the email and password credential, to upgrade the 
// anonymous user. 
var credential = firebase.auth.EmailAuthProvider.credential(email, password); 

// 2. Links the credential to the currently signed in user 
// (the anonymous user). 
firebase.auth().currentUser.linkWithCredential(credential).then(function(user) { 
    console.log("Anonymous account successfully upgraded", user); 
}, function(error) { 
    console.log("Error upgrading anonymous account", error); 
}); 

मुझे पता है कि अगर काम करता है!

+2

firebase.User.prototype.link को बहिष्कृत किया गया है। कृपया इसके बजाय firebase.User.prototype.linkWithCredential का उपयोग करें। –

+0

धन्यवाद, अपडेट किया गया! – TMSCH

+1

इस उत्तर के लिए धन्यवाद - एक ही तर्क फायरबेस का उपयोग कर क्लाइंट मोबाइल ऐप्स में लागू होता है। मैं एक आईओएस ऐप में एक ही समस्या का सामना कर रहा था, और इस तर्क ने इसे ठीक किया। इस पर फायरबेस दस्तावेज़ बहुत स्पष्ट नहीं हैं - उन्हें इसे हाइलाइट करना चाहिए (यदि Google से कोई भी इसे पढ़ता है)। – Peza

संबंधित मुद्दे