6

FB JS SDK ile ilgili bir sorun yaşıyorum.FB tanımlı değil javascript

Bir facebook sayfası düğümünün fan_count değerini almak için istekte bulunmaya çalışıyorum. İşte

vücuda benim html dosyasından benim kodudur:

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); 
     } 
    ); 
    } 
} 

Ama hatadır:

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

Ve ben js uygulamasında bu kullanıyorum, bunu kullanmak FB tanımlanmamıştır. Baska öneri ?

+0

You should 'geri arama URI olarak init' veya birinci init daha yüklenir dava FB olun. –

+0

Yani 'fbAsyncInit' işlevinin sonunda' init' işlevini çağırmalıyım? Görünüşe göre bana benzemiyor :) –

+0

Bakın: http://stackoverflow.com/questions/9184163/javascript-my-fbasyncinit-method-never-gets-called –

cevap

13

Bu doğru olurdu, JS SDK başlatıldıktan sonra FB'yi kullanmanız gerekir. Yani, kesinlikle sonsuz döngüye FB.api aramak istemiyoruz söyleniyor, bu yüzden o kısmı kaldırıldı:

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

sadece HTML açmak değilsiniz, emin Bu gerçek bir sunucudan çalıştırmak olun En az bir yerel sunucu olmadan bir tarayıcıda dosyaları.

+0

Cevabınız için teşekkürler, şimdi FB'nin bu hatası tanımlı değil. Ancak, init fonksiyonu asla çağrılmaz. Ben kodunuzu geçmiş ve sadece başlangıçta init fonksiyonu bir console.log ekleyin ve web tarayıcı konsolu boş kalır –

+0

js sdk yüklenmez sanırım. Bunu gerçek bir web sunucusuyla mı deniyorsunuz, yoksa html dosyasını yerel olarak tarayıcıda mı açtınız? – luschn

+0

Yerel olarak açtığım html dosyası –

2

Bu hatayı aldım çünkü init kodunu bağımsız bir js dosyasında yazıyor, dolayısıyla FB elbette tanımlı değil, çünkü window.FB olmalıdır.

kodum:

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

}