图谱 API 版

JavaScript 版 Facebook SDK 与 jQuery

本教程将介绍如何在 jQuery Web 应用内集成 JavaScript 版 Facebook SDK。jQuery 和 JavaScript SDK 都提供了独特的解决方案,以确保在库加载完成后再执行代码。本教程将帮助您整合 jQuery 和 JavaScript SDK,确保在调用 SDK 之前,这两种解决方案都可以使用。

本教程中的示例使用 Google Hosted Libraries CDN 提供的 jQuery 2.0.0。如需详细了解 jQuery,请参阅 jQuery 文档

实施

将 jQuery 添加至文件头,并实施 $(document).ready() 方法,该方法将在 DOM 完成且 jQuery 实例化之后执行。您的页面将与下图相似:

<html>
<head>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
  <link rel="stylesheet" href="style.css" />
  <title>jQuery Example</title>
  <script>
    $(document).ready(function() {
      // Execute some code here
    });
  </script>
</head>

在这里,我们并不使用默认的异步脚本导入 JavaScript 版 Facebook SDK,而是使用 jQuery 的 getScript() 方法从用户区域设置的正确网址导入 SDK。您可以省略网址开头的协议,让系统根据实际网址使用匹配的协议。

默认情况下,jQuery 时间戳会异步处理请求,避免其被浏览器缓存。您可以使用 ajaxSetup() 方法停用此功能,以便在页面之间本地缓存 SDK。

getScript() 是异步方法,所以您可以传递异步回调函数,并在其中像往常一样执行 SDK 初始化代码。请通过应用面板添加应用编号。

$(document).ready(function() {
  $.ajaxSetup({ cache: true });
  $.getScript('https://connect.facebook.net/en_US/sdk.js', function(){
    FB.init({
      appId: '{your-app-id}',
      version: 'v2.7' // or v2.1, v2.2, v2.3, ...
    });     
    $('#loginbutton,#feedbutton').removeAttr('disabled');
    FB.getLoginStatus(updateStatusCallback);
  });
});

依赖项分离

将所有 SDK 调用逻辑放入 getScript 回调函数可确保 FB 对象存在,但这对于复杂的应用来说并不是最佳的设计模式。由于 FB 对象具有全局性,所以也可以将 SDK 逻辑置于 getScript 回调函数之外,只要您确定此对象在调用之前就存在。或者,您可以使用模块依赖项框架(例如 RequireJS)确保将 FB 对象加载为应用设置。