2016-10-05 10 views
10

पुन: प्रमाणीकृत करें मैं फ़ायरबेस में किसी उपयोगकर्ता को पुनः प्रमाणित करने के तरीके के साथ सहायता की सराहना करता हूं। मुझे आश्चर्य है कि अगर इन दस्तावेजों का उपयोग कैसे किया जाए, तो यह सभी महान विशेषताओं को जोड़ने में कोई समझ नहीं आता है:फ़ायरबेस का उपयोग

वर्तमान में, यह वही है जो मैं कोशिश कर रहा हूं, और यह काम नहीं कर रहा है। cannot read property 'credential' of undefined

के रूप में त्रुटियाँ निर्माता में:

constructor(@Inject(FirebaseApp) firebaseApp: any) { 
    this.auth = firebaseApp.auth(); 
    console.log(this.auth); 
    } 

तो समारोह

changePassword(passwordData) { 
    if(passwordData.valid) { 
     console.log(passwordData.value); 
     // let us reauthenticate first irrespective of how long 
     // user's been logged in! 

     const user = this.auth.currentUser; 
     const credential = this.auth.EmailAuthProvider.credential(user.email, passwordData.value.oldpassword); 
     console.log(credential); 
     this.auth.reauthenticate(credential) 
     .then((_) => { 
      console.log('User reauthenticated'); 
      this.auth.updatePassword(passwordData.value.newpassword) 
      .then((_) => { 
       console.log('Password changed'); 
      }) 
      .catch((error) => { 
       console.log(error); 
      }) 
     }) 
     .catch((error) => { 
      console.log(error); 
     }) 
    } 
    } 
+0

क्या आप इसे हल करने में सक्षम थे? मैं एक ही मुद्दे में भाग रहा हूँ। –

+0

@MK_Dev आपने फ्रैंक के उत्तर की कोशिश की? आपको उपयोगकर्ता पर पुनः प्रमाणीकरण करना चाहिए, न कि लेखक। शायद यह अब काम करेगा, क्योंकि यह मेरे लिए कभी नहीं किया। – Rexford

+0

वास्तव में, यह काम किया। मुझे वही समस्या थी जहां EmailAuthProvider को अपरिभाषित किया गया था। मुझे जो करना था वह किसी भी को "कास्ट" फायरबेस था: var fb: any = firebase; var credential = fb.auth.EmailAuthProvider.credential (ईमेल, पासवर्ड); –

उत्तर

10

reauthenticate() विधि एक firebase.User पर कहा जाता है, पर नहीं firebase.auth.Auth ही।

var user = firebase.app.auth().currentUser; 
var credentials = firebase.auth.EmailAuthProvider.credential('[email protected]', 'firebase'); 
user.reauthenticate(credentials); 

अद्यतन (जुलाई 2017):

Firebase वेब SDK के 4.0 संस्करण में कुछ तोड़ने परिवर्तन कर रहे हैं।

ब्रेकिंग: release notes से firebase.User.prototype.reauthenticatefirebase.User.prototype.reauthenticateWithCredential के पक्ष में हटा दिया गया है।

जहां तक ​​मैं reauthenticateWithCredential बता सकता हूं पुरानी विधि के लिए एक ड्रॉप-इन प्रतिस्थापन है।

+0

आपके कोड और मेरा के बीच कुछ अंतर? मेरे पास यह पता लगाने की कोशिश कर रही है कि आपका कोड कितना अलग है, लेकिन मैं नहीं कर सकता। – Rexford

+0

आप 'this.auth.reauthenticate'' कहलाते हैं, जहां 'यह' 'firebase.auth()' को संदर्भित करता है। मैं उपयोगकर्ता पर 'user.reauthenticate' कहता हूं। –

+0

ठीक है, 'firebase.auth.EmailAuthProvider' मुझे एक अपरिभाषित देता है। पूरी तरह से, अगर मैं ऐसा करता हूं: 'firebaseApp.auth.EmailAuthProvider', मुझे एक अपरिभाषित मिलता है। क्या 'फायरबेस ऐप' वास्तव में सबकुछ फायरबेस को उजागर कर रहा है? – Rexford