6

Ho un problema con FB JS SDK.FB non definito javascript

Sto provando a fare una richiesta per ottenere il ventaglio di un nodo di una pagina facebook.

Ecco il mio codice dal mio file html all'interno del corpo:

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

E quando sto usando questo sul mio js app, lo uso:

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

ma l'errore è quell'FB non è definito. Eventuali suggerimenti ?

+0

Si dovrebbe 'init' come callback URI o fare Sue FB viene prima caricato, di quanto il tuo init. –

+0

Quindi devo chiamare la funzione 'init' alla fine della funzione' fbAsyncInit'? Sembra che non funzioni per me :) –

+0

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

risposta

13

Questo sarebbe corretto, è necessario utilizzare FB dopo l'inizializzazione dell'SDK JS. Detto questo, è sicuramente Non voglio chiamare FB.api in un loop infinito, così ho rimosso questa parte:

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

Assicurati di eseguire questo da un server reale, Non tiratevi basta aprire il codice HTML file in un browser senza almeno un server locale.

+0

grazie per la tua risposta, ora non ho questo errore di FB non è definito. Ma la funzione init non viene mai chiamata. Ho passato il codice e aggiungo semplicemente un console.log nella funzione init all'inizio e la console del browser rimane vuota –

+0

Suppongo che js sdk non venga caricato. stai provando questo con un server web vero o hai appena aperto il file html nel browser in locale? – luschn

+0

Lo apro localmente con il file html –

2

Ho ricevuto questo errore perché scrivo il codice init in un file js indipendente, quindi, ovviamente, FB non è definito, perché dovrebbe essere window.FB.

il mio codice:

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

} 
Problemi correlati