2016-05-23 21 views
8

मैं Firebase (v3) प्रमाणीकरण के साथ एक लॉगिन बना रही हूँ दूर करता है और मैं इस समस्या को मारा:Firebase लॉगिंग पिछले प्रदाता (पासवर्ड)

  1. उपयोगकर्ता ईमेल और पासवर्ड से शुरू में साइन अप करता है ।
  2. लॉगआउट।
  3. बाद में, Google के साथ साइन इन करें।

मैं एक त्रुटि शिकायत उस ईमेल पते किसी दूसरे खाते के लिए प्रयोग किया जाता है उम्मीद करेंगे, और फिर पासवर्ड तो खातों को लिंक करने टाइप करने के लिए कहें, लेकिन इसके बजाय Firebase चुपचाप ईमेल/पासवर्ड लॉगिन को हटा विधि और एक सफल संदेश देता है।

गूगल के साथ प्रमाणीकरण के लिए कोड:

var provider = new firebase.auth.GoogleAuthProvider(); 
firebase.auth().signInWithPopup(provider).then(
    result => { 
     console.log("federated (google) result", result); 
    }, 
    error => { 
     console.log("federated (google) error", error); 
    } 
); 

ईमेल और पासवर्ड से प्रमाणीकरण के लिए कोड:

// Login: 
firebase.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(
    ok => { 
     console.log("email/pass sign in success", ok); 
    }, 
    error => { 
     console.log("email/pass sign in error", error); 
    } 
) 

// Register: 
firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password).then(
    ok => { 
     console.log("Register OK", ok); 
    }, 
    error => { 
     console.log("Register error", error); 
    } 
) 

मैं in the guide उस खाते को जोड़ने अपने वर्तमान प्रदाता के साथ एक उपयोगकर्ता में पहली हस्ताक्षर करने के द्वारा किया जाता है को देखने के/विधि और केवल तब नई प्रमाणीकरण विधि/प्रदाता के लिए प्रमाण पत्र/प्राप्त टोकन के लिए पूछें। मेरे मामले में, मुझे नहीं पता कि उनके पास बहुत देर तक अन्य प्रमाणीकरण प्रदाता हैं (फ़ायरबेस इसे ओवरराइट करता है)।

क्या फ़ायरबेस द्वारा पहले से ही मौजूद खाते के विवरण को ओवरराइट करने से पहले ईमेल का पता लगाने का कोई तरीका है और उपयोगकर्ता से अपना पासवर्ड टाइप करने और खातों को लिंक करने के लिए कहता है? या, इससे भी बेहतर, Google के साथ लॉग इन किए गए खातों को स्वचालित रूप से लिंक करते हैं और ईमेल पते मेल खाते हैं?

+0

चूंकि फायरबेस 3 आपको विभिन्न मैकेनिज्म का उपयोग करके लॉग इन करने की अनुमति देता है .. आप एक एकीकृत दृश्य के लिए विभिन्न तंत्रों को एक साथ जोड़ना चाह सकते हैं। Https://firebase.google.com/docs/auth/android/account-linking – ErstwhileIII

+1

का संदर्भ लें यह सही है। मैं विभिन्न तंत्रों को जोड़ना चाहता था लेकिन विशेष रूप से मुद्दा (या भ्रम, उत्तर देखें) तब होता था जब उपयोगकर्ता के पास पहले से ही एक खाता है (ईमेल/पासवर्ड कहें) और अगली बार जब वह विज़िट करता है, इसके बारे में भूल जाता है, और इसमें साइन इन होता है विधि बी के साथ (Google कहें)। ईमेल पते समान हैं, इसलिए खातों को स्वचालित रूप से लिंक किया जाना चाहिए (प्रोग्रामेटिक रूप से आप नहीं जानते कि साइन-इन के दौरान पहले से ही उस ई-मेल के साथ एक खाता है), या साइन इन को एक त्रुटि वापस करनी चाहिए ताकि आप डाल सकें कुछ इस मुद्दे से निपटने के लिए लॉगिन करते हैं। मैंने अपने जवाब में लिखा कि वास्तव में क्या होता है। –

उत्तर

6

मैंने इसे समझ लिया। फायरबेस इस तरह व्यवहार करता है और यह तकनीकी/कोडिंग समस्या नहीं थी। यह एक दस्तावेज़ीकरण मुद्दा है।

जब कोई उपयोगकर्ता ईमेल और पासवर्ड से साइन अप करने, लॉग आउट और एक अलग विधि के साथ में संकेत (कि पहले उपयोग नहीं किया गया था), दो बातें होती हैं कर सकते हैं: ईमेल की पुष्टि हो

  1. हैं, जब आप किसी नए प्रदाता (मेरे प्रश्न में वांछित परिणाम) के साथ लॉगिन करते हैं तो ईमेल/पासवर्ड प्रमाण-पत्र याद किए जाते हैं।

या

    ईमेल अपुष्ट है
  1. , तो उपयोगकर्ता इस तरह के अद्यतन किया जाता है कि ईमेल/पासवर्ड क्रेडेंशियल्स निकाल दिए जाते हैं और नए प्रवेश पद्धति रखा जाएगा। उपयोगकर्ता विवरण जैसे displayName स्वचालित रूप से अपडेट नहीं किए जाते हैं।
+0

आप अभी भी अपने स्वयं के प्रश्न का उत्तर नहीं देते हैं, क्या ऐसा होने का अनुमान लगाने और बताए जाने का कोई तरीका है? –

+0

मैंने अपने प्रश्न का "या, बेहतर" हिस्सा भी दिया। मैं वास्तव में खातों को जोड़ने के एकमात्र उद्देश्य के साथ चेक बनाना चाहता था। चूंकि ई-मेल सत्यापित होने पर यह स्वचालित रूप से होता है, इसलिए मुझे अब जांच करने की आवश्यकता नहीं है। संक्षेप में, मुझे ऐसा करने का कोई तरीका नहीं मिला है। –

+0

जहां ईमेल सत्यापन का उपयोग नहीं किया जाता है, एसएसओ पूरा होने से पहले किसी बिंदु पर उपयोगकर्ता को सूचित किया जा सकता है कि उपयोगकर्ता को सूचित किया जा सकता है (कि उनका पासवर्ड अब काम नहीं करेगा)। –

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