6

मुझे एफबी जेएस एसडीके के साथ समस्या है।एफबी परिभाषित नहीं किया गया है जावास्क्रिप्ट

मैं एक फेसबुक पेज नोड के fan_count प्राप्त करने का अनुरोध करने का प्रयास कर रहा हूं।

यहाँ शरीर में मेरी html फ़ाइल से मेरे कोड है:

<script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : 'your-app-id', 
     xfbml  : true, 
     version : 'v2.5' 
     }); 
    }; 

    (function(d, s, id){ 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) {return;} 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/en_US/sdk.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 

और जब मैं अपने js एप्लिकेशन पर इस का उपयोग कर रहा है, मैं इसका इस्तेमाल:

init(); 

function init() { 
    var id_fb = "l214.animaux"; 
    while (true) { 
    console.log("je suis ici"); 
    FB.api(
     '/' + id_fb + '/', 
     'GET', 
     {"fields":"fan_count"}, 
     function(response) { 
     alert(response.fan_count); 
     } 
    ); 
    } 
} 

लेकिन त्रुटि है कि एफबी परिभाषित नहीं है। कोई सुझाव ?

+0

आप चाहिए 'कॉलबैक यूआरआई के रूप में init' या पहले भरी हुई है अपने init से मुकदमा अमेरिकन प्लान बनाते हैं। –

+0

तो मुझे 'fbAsyncInit' फ़ंक्शन के अंत में 'init' फ़ंक्शन को कॉल करना होगा? ऐसा लगता है कि मेरे लिए काम नहीं करता :) –

+0

देखें: http://stackoverflow.com/questions/9184163/javascript-my-fbasyncinit-method-never-gets-called –

उत्तर

13

यह सही होगा, जेएस एसडीके शुरू होने के बाद आपको एफबी का उपयोग करने की आवश्यकता है। कहा जा रहा है, आप निश्चित रूप से एक अनंत लूप में FB.api कॉल करना चाहते हैं नहीं है, तो मैं वह हिस्सा हटाया:

<script> 
    function init() { 
     FB.api(
      '/l214.animaux', 
      {"fields":"fan_count"}, 
      function(response) { 
      alert(response.fan_count); 
      } 
     ); 
    } 

    window.fbAsyncInit = function() { 
     FB.init({ 
     appId  : 'your-app-id', 
     xfbml  : true, 
     version : 'v2.5' 
     }); 

     init(); 
    }; 

    (function(d, s, id){ 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) {return;} 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/en_US/sdk.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 

बस अपनी HTML खोलने नहींं, सुनिश्चित करें कि आप यह एक वास्तविक सर्वर से चलाने बनाओ कम से कम एक स्थानीय सर्वर के बिना ब्राउज़र में फ़ाइलें।

+0

आपके उत्तर के लिए धन्यवाद, अब मुझे एफबी की यह त्रुटि परिभाषित नहीं है। लेकिन, init समारोह कभी नहीं कहा जाता है। मैंने आपके कोड को पिछले और शुरुआत में init फ़ंक्शन में एक console.log जोड़ दिया है और वेब ब्राउज़र कंसोल खाली रहता है –

+0

मुझे लगता है कि जेएस एसडीके लोड नहीं होता है। क्या आप इसे वास्तविक वेबसर्वर के साथ आजमा रहे हैं, या आपने स्थानीय रूप से ब्राउज़र में एचटीएमएल फाइल खोल दी है? – luschn

+0

मैं इसे स्थानीय रूप से HTML फ़ाइल –

2

मुझे यह त्रुटि मिली क्योंकि मैं एक स्वतंत्र जेएस फ़ाइल में इनिट कोड लिखता हूं, इसलिए, FB परिभाषित नहीं किया गया है, क्योंकि यह window.FB होना चाहिए।

मेरी कोड:

class FacebookUtil { 

    static init() { 
    // comes from https://developers.facebook.com/docs/javascript/quickstart 
    // notice FB should be window.FB 
    window.fbAsyncInit = function() { 
     window.FB.init({ 
     appId   : '...', 
     autoLogAppEvents : true, 
     xfbml   : true, 
     version   : 'v2.10' 
     }); 
     window.FB.AppEvents.logPageView(); 
    }; 

    (function(d, s, id){ 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) {return;} 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/en_US/sdk.js"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
    } 

    static login() { 
    window.FB.login(...) 
    } 

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