6

FB JS SDKに問題があります。FBが定義されていないjavascript

facebookページノードの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); 
     } 
    ); 
    } 
} 

しかし、エラーがありますそのFBは定義されていません。助言がありますか ?

+0

あなたは 'コールバックURIとしてinit'やスーFBは、まずあなたのinitよりも、ロードされていることを確認しなければなりません。 –

+0

'fbAsyncInit'関数の最後に' init'関数を呼び出さなければなりませんか?それは私のために働いていないようです:) –

+0

参照:http://stackoverflow.com/questions/9184163/javascript-my-fbasyncinit-method-never-gets-called –

答えて

13

これは正しく、JS SDKの初期化後にFBを使用する必要があります。ちょうどあなたのHTMLを開くドント、あなたが実際のサーバーからこれを実行していることを確認してください

<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> 

:それは言って、あなたは間違いなく無限ループにFB.apiを呼びたいドントので、私はその部分を削除しました少なくともローカルサーバーを持たないブラウザーのファイル。

+0

あなたの答えをありがとう、今私はFBのこのエラーが定義されていないしていない。しかし、init関数は呼び出されません。私はあなたのコードを過ぎ、ちょうど最初のinit関数のconsole.logを追加し、Webブラウザのコンソールは空白のままです。 –

+0

js sdkがロードされないと思います。あなたは実際のWebサーバーでこれを試しているのですか、ブラウザでhtmlファイルをローカルで開くだけでしたか? – luschn

+0

私はそれをローカルのhtmlファイル –

2

私はそれがwindow.FBする必要がありますので、もちろんFBの、定義されていない、独立したJSファイル内のinitコードを書くので、ので、私はこのエラーを得ました。

私のコード:

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(...) 
    } 

} 
関連する問題