javascript - Facebook API 没有响应

标签 javascript html facebook facebook-javascript-sdk

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

Uncaught ReferenceError: FB is not defined

这是我的代码

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

最佳答案

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

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

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

尽管如此,如果用户不先登录,您可能会收到一条错误消息,指出 API 调用需要访问 token 。

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

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

关于javascript - Facebook API 没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39287152/

相关文章:

javascript - 将下拉动画应用于移动导航

facebook - 使用 Facebook 应用程序 access_token 通过 Graph API 获取有年龄限制的页面数据?

facebook - 在 Web API 中返回 401 Facebook 登录

javascript - 当我一一添加数据对象的成员时,使用 JSDoc 记录它们的正确方法是什么?

javascript - 如何在应用程序中读取应用程序的版本?

javascript - 使用 Javascript 创建可重复的 HTML 表格

HTML5 链接到部分

javascript - 如何检查特定字符串中是否存在特殊字符

javascript - 将 z-index 分配给 Javascript 插件

facebook - 如何清除 Facebook 点赞按钮的缓存信息