FB没有定义javascript

时间:2016-04-30 14:54:37

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

我遇到了FB JS SDK的问题。

我试图获取获取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 app上使用它时,我会使用它:

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未定义。有什么建议 ?

2 个答案:

答案 0 :(得分:17)

这是正确的,你需要在JS SDK初始化后使用FB。话虽这么说,你绝对不想在无限循环中调用FB.api,所以我删除了那部分:

void matrixVectorProduct(MTX *MAT, double* inVec, double* outVec){

int i,j, ckey;

if((matcode[1] == 'X')&&(matcode[3] == 'S')) 
{
    //Initialize outVec to zeros
    for(int j=0;j<MAT->nrows;j++)
            outVec[j] = 0.0;

    #pragma omp parallel
    {
        #pragma omp for private(ckey,j) schedule(static)
        for(i=0;i<MAT->nrows;i++) {
            double zi = 0.0;
            for(ckey=MAT->row_ptr[i];ckey<MAT->row_ptr[i+1];ckey++) {
                j = MAT->JA[ckey];
                zi = zi + MAT->val[ckey] * inVec[j];
            }
        outVec[i] += zi;
        }
    }

    #pragma omp parallel
    {
        #pragma omp for private(ckey,j) schedule(static) 
        for(int i=0;i<MAT->nrows;i++) 
            for(int ckey=MAT->row_ptr[i];ckey<MAT->row_ptr[i+1];ckey++) {
                j = MAT->JA[ckey];
                if(j!=i)
                    outVec[j] += MAT->val[ckey] * inVec[i];;
            }
    }

}
else
{
    fprintf(stderr,"\n Not a symmetric Matrix. CG method not applicable\n");
    exit(1);
}

return;
}

确保从实际服务器运行此程序,不要只在浏览器中打开HTML文件,而不必至少使用本地服务器。

答案 1 :(得分:4)

我收到此错误是因为我在独立的js文件中编写了初始化代码,所以当然没有定义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(...)
  }

}