7

मैं अपने ionic project में नवीनतम फ़ायरबेस संस्करण से नवीनतम में अपग्रेड करने का प्रयास कर रहा हूं। मैंने अपग्रेड के लिए this ट्यूटोरियल का पालन किया। इस पृष्ठ से चरण 4 में मैं अंतिम बयान firebase.database().ref(); पर फंस गया हूं।firebase.database कोई फ़ंक्शन नहीं है

त्रुटि संदेश

TypeError: firebase.database is not a function 

नीचे मेरी कोड है। कृप्या सहायता करे।

... 

// Initialize Firebase 
this.config = { 
    apiKey: "some-api-key", 
    authDomain: "myapp.firebaseapp.com", 
    databaseURL: "https://myapp.firebaseio.com", 
    storageBucket: "project-somenumber.appspot.com", 
}; 

... 

this.authWithOAuthPopup = function(type) { 
    var deferred = $q.defer(); 
    console.log(service.config); // ---> Object {apiKey: "some-api-key", authDomain: "myapp.firebaseapp.com", databaseURL: "https://myapp.firebaseio.com", storageBucket: "project-somenumber.appspot.com"} 
    firebase.initializeApp(service.config); 
    console.log(firebase); // ---> Object {SDK_VERSION: "3.0.5", INTERNAL: Object} 
    service.rootRef = firebase.database().ref(); //new Firebase("https://rsb2.firebaseio.com"); ---> I am getting error on this line "TypeError: firebase.database is not a function" 
    service.rootRef.authWithOAuthPopup(type, function(error, authData) { 
     if (error) { 
      service.authError = error; 
      switch (error.code) { 
       case "INVALID_EMAIL": 
        console.log("The specified user account email is invalid."); 
        break; 
       case "INVALID_PASSWORD": 
        console.log("The specified user account password is incorrect."); 
        break; 
       case "INVALID_USER": 
        console.log("The specified user account does not exist."); 
        break; 
       default: 
        console.log("Error logging user in:", error); 
      } 
      deferred.resolve(service.authError); 
     } else { 
      service.authData = authData; 
      console.log("Authenticated successfully with payload:", authData); 
      deferred.resolve(service.authData); 
     } 
     return deferred.promise; 
    }); 
    return deferred.promise; 
} 

var service = this; 

अद्यतन

नवीनतम डेटाबेस पुस्तकालय को जोड़ने के बाद यह सवाल समस्या हल हो रहा है।

this.authWithOAuthPopup = function(type) { 
    var deferred = $q.defer(); 
    console.log(service.config); 
    firebase.initializeApp(service.config); 
    console.log(firebase); 
    service.rootRef = firebase.database(); //.ref(); //new Firebase("https://rsb2.firebaseio.com"); 

    var provider = new firebase.auth.FacebookAuthProvider(); 
    firebase.auth().signInWithRedirect(provider); 
    firebase.auth().getRedirectResult().then(function(result) { 
     if (result.credential) { 
      // This gives you a Facebook Access Token. You can use it to access the Facebook API. 
      var token = result.credential.accessToken; 
      console.log(result); 
      // ... 
     } 
     // The signed-in user info. 
     var user = result.user; 
    }).catch(function(error) { 
     // Handle Errors here. 
     var errorCode = error.code; 
     var errorMessage = error.message; 
     // The email of the user's account used. 
     var email = error.email; 
     // The firebase.auth.AuthCredential type that was used. 
     var credential = error.credential; 
     // ... 
    }); 
    return deferred.promise; 
} 
+0

मुझे पता है कि आप किसी भी प्रगति – adolfosrs

उत्तर

7

मैं आयोनिक के साथ इस में भाग गया और यह है कि मैं सब कुछ जब नवीनतम Firebase क्लाइंट के प्रयोग सहित नहीं किया गया था निकला। यदि आपने फायरबेस को firebase-app के रूप में शामिल किया है, तो डेटाबेस और ऑथ टुकड़ों को अलग से जरूरी होने की आवश्यकता है क्योंकि इन्हें फायरबेस को शामिल करते समय बंडल नहीं किया जाता है। आप firebase-app.js

<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-auth.js"></script> 
<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase-database.js"></script> 

जाहिर है आप CDN का उपयोग करने की जरूरत नहीं है शामिल हैं के बाद

अपने index.html के लिए निम्न जोड़ें, आप bower (शायद पसंदीदा आयोनिक साथ जिस तरह से) या Browserify साथ NPM इस्तेमाल कर सकते हैं।

// Browserify Setup 
var firebase = require('firebase/app'); 
require('firebase/auth'); 
require('firebase/database'); 

स्निपेट Firebase Web Setup Docs

से लिया नीचे आप कोड की राशि आपके एप्लिकेशन सिर्फ जिन सुविधाओं की आवश्यकता शामिल करके का उपयोग करता है कम कर सकते हैं। व्यक्तिगत रूप से स्थापित करने योग्य घटक हैं:

फ़ायरबेस-ऐप - कोर फायरबेस क्लाइंट (आवश्यक)।
फायरबेस-ऑथ - फायरबेस प्रमाणीकरण (वैकल्पिक)।
फायरबेस-डेटाबेस - फायरबेस रीयलटाइम डेटाबेस (वैकल्पिक)।
फायरबेस भंडारण - फायरबेस भंडारण (वैकल्पिक)।

CDN से, अलग-अलग घटकों की जरूरत शामिल

+0

से ऊपर अपना कोड अपडेट किया है धन्यवाद, मैंने डेटाबेस लाइब्रेरी भी शामिल की है। यह अब काम करता है। – Ricky

1

सबसे पहले मेरी कोड अपडेट यहाँ, आप उपयोग कर रहे

<script src="https://www.gstatic.com/firebasejs/3.1.0/firebase.js"></script> 

Firebase authWithOAuthPopup नए संस्करण में एक छोटा सा बदल गया है सुनिश्चित करें।

अब आप प्रमाणीकरण विधियों को कॉल करने के लिए रेफरी का उपयोग नहीं करते हैं। आपको firebase.auth() इंस्टेंट का उपयोग करना चाहिए।

var auth = firebase.auth(); 
var provider = new firebase.auth.TwitterAuthProvider(); 
auth.signInWithPopup(provider).then(function(result) { 
    // User signed in! 
    var uid = result.user.uid; 
}).catch(function(error) { 
    // An error occurred 
}); 
+0

[दस्तावेज़] (https://firebase.google.com/ बनाया है, तो चलो (firebase एप्लिकेशन के अंतर्गत पहले शामिल हैं) डॉक्स/ऑथ/वेब/फेसबुक-लॉगिन) मोबाइल के लिए रीडायरेक्ट विधि का उपयोग करने की सिफारिश करता है।तो मैं रीडायरेक्ट विधि का उपयोग कर फेसबुक का उपयोग करके प्रमाणित करने में सक्षम हूं, लेकिन यह मेरे वेबपृष्ठ को पुनः लोड करता है (वर्तमान में क्रोम पर आयनिक ऐप का परीक्षण करता है) और मैं पेलोड विवरण प्राप्त नहीं कर पा रहा हूं। मैंने – Ricky

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