Facebook api没有回复

时间:2016-09-02 07:54:50

标签: javascript html facebook facebook-javascript-sdk

我按照开始使用Facebook API的说明进行操作,但无法弄清楚为什么会出现错误

  

未捕获的ReferenceError:未定义FB

这是我的代码

<body>
<script>
 window.fbAsyncInit = function() {
 FB.init({
   appId      : '627917414035377',
   xfbml      : true,
   version    : 'v2.7'
  });
};

(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'));

FB.api(
  '/me',
  'GET',
  {"fields":"fan_count"},
  function(response) {
  // Insert your code here
  console.log(response);
  }
);
 </script>
 </body>

1 个答案:

答案 0 :(得分:1)

以这种方式加载SDK时,您需要等到它已正确初始化(通过fbAsyncInit事件处理程序中的FB.init调用发生),然后才能进一步使用FB对象。

如果你只想在页面加载时进行自动API调用,而不需要任何用户交互 - 那么只需将调用放在fbAsyncInit处理函数中,在FB.init之后:

window.fbAsyncInit = function() {
  FB.init({
    // …
  });
  FB.api({
    // …
  });
};

虽然在没有用户首先登录的情况下,您可能会收到一条错误消息,指出API调用需要访问令牌。

另外,当您在每次加载页面时发出此请求时,很快就会遇到API速率限制。

您应该在服务器端(使用应用程序或页面访问令牌)执行此操作,并实现某种形式的缓存,这样您就不必在每个页面加载时发出API请求。