网页上的开放图谱动态

本文档将介绍使用开放图谱发布第一个动态的关键步骤。

开始前,您需要执行以下操作:

当您借助本指南完成上述步骤后,还可以了解可能的后续步骤

创建 Facebook 应用编号

您的项目可能已经拥有 Facebook 应用编号。您可以在多个开放平台(例如,iOS、Android 和网页平台)上使用相同的应用编号。

如果您的项目还没有 Facebook 应用编号,则首先应为其创建一个编号:

创建新的应用编号

 
此操作会显示一个弹出框,提示您输入两项内容:

  • 显示名称。这是向 Facebook 以及其他一些位置发布动态时使用的应用名称。参考开放图谱新手入门或类似资料。
  • 名称空间。本指南不作要求,留空即可。
  • 类别。 用于确定您构建的应用的类型。 本例中请选择通讯

创建应用后,系统将为您提供显示用户和 API 统计数据的面板。 在此屏幕中,点击左侧的设置

填写以下字段,如以下屏幕截图所示:

  • 联系邮箱。您的开发者电子邮箱。
  • 应用域名。托管应用的域(无 http:// 或 https:// 前缀)。

此示例是基本网页,因此,您需要将网页作为开放平台添加。 点击页面底部的添加开放平台,然后选择网站

如下所示,输入您想要存储文件的路径。

完成后,点击底部的保存更改

设置应用

将以下文件放在上述设置中指定的 URI 中。

在文件中,您需要更改一个项目,即应用编号。在文件中搜索“fbAppId”,并使用应用面板中设置页面顶部所列的应用编号替换该值。

<html>
<head>
<title>Open Graph Getting Started App - og.likes</title>
<style type="text/css">
div { padding: 10px; }
</style>
<meta charset="UTF-8">
</head>
<body>
<script type="text/javascript">
  // You probably don't want to use globals, but this is just example code
  var fbAppId = 'replace me';
  var objectToLike = 'http://techcrunch.com/2013/02/06/facebook-launches-developers-live-video-channel-to-keep-its-developer-ecosystem-up-to-date/';

  // This check is just here to make sure you set your app ID. You don't
  // need to use it in production. 
  if (fbAppId === 'replace me') {
    alert('Please set the fbAppId in the sample.');
  }

  /*
   * This is boilerplate code that is used to initialize
   * the Facebook JS SDK.  You would normally set your
   * App ID in this code.
   */

  // Additional JS functions here
  window.fbAsyncInit = function() {
    FB.init({
      appId      : fbAppId, // App ID
      status     : true,    // check login status
      cookie     : true,    // enable cookies to allow the
                            // server to access the session
      xfbml      : true,     // parse page for xfbml or html5
                            // social plugins like login button below
      version     : 'v2.7',  // Specify an API version
    });

    // Put additional init code here
  };

  // Load the SDK Asynchronously
  (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'));

  /*
   * This function makes a call to the og.likes API.  The
   * object argument is the object you like.  Other types
   * of APIs may take other arguments. (i.e. the book.reads
   * API takes a book= argument.)
   *
   * Because it's a sample, it also sets the privacy
   * parameter so that it will create a story that only you
   * can see.  Remove the privacy parameter and the story
   * will be visible to whatever the default privacy was when
   * you added the app.
   *
   * Also note that you can view any story with the id, as
   * demonstrated with the code below.
   *
   * APIs used in postLike():
   * Call the Graph API from JS:
   *   https://developers.facebook.com/docs/reference/javascript/FB.api
   * The Open Graph og.likes API:
   *   https://developers.facebook.com/docs/reference/opengraph/action-type/og.likes
   * Privacy argument:
   *   https://developers.facebook.com/docs/reference/api/privacy-parameter
   */

  function postLike() {
    FB.api(
       'https://graph.facebook.com/me/og.likes',
       'post',
       { object: objectToLike,
         privacy: {'value': 'SELF'} },
       function(response) {
         if (!response) {
           alert('Error occurred.');
         } else if (response.error) {
           document.getElementById('result').innerHTML =
             'Error: ' + response.error.message;
         } else {
           document.getElementById('result').innerHTML =
             '<a href=\"https://www.facebook.com/me/activity/' +
             response.id + '\">' +
             'Story created.  ID is ' +
             response.id + '</a>';
         }
       }
    );
  }
</script>

<!--
  Login Button

  https://developers.facebook.com/docs/reference/plugins/login

  This example needs the 'publish_actions' permission in
  order to publish an action.  The scope parameter below
  is what prompts the user for that permission.
-->

<div
  class="fb-login-button"
  data-show-faces="true"
  data-width="200"
  data-max-rows="1"
  data-scope="publish_actions">
</div>

<div>
This example creates a story on Facebook using the
<a href="https://developers.facebook.com/docs/reference/ogaction/og.likes">
<code>og.likes</code></a> API.  That story will just say
that you like an
<a href="http://techcrunch.com/2013/02/06/facebook-launches-developers-live-video-channel-to-keep-its-developer-ecosystem-up-to-date/">
article on TechCrunch</a>.  The story should only
be visible to you.
</div>

<div>
<input
  type="button"
  value="Create a story with an og.likes action"
  onclick="postLike();">
</div>

<div id="result"></div>

</body>
</html>

发布动态

如果加载应用,您应能看到以下内容:

登录后,授权应用在您的时间线上发帖,然后点击“发布动态...”按钮。 您应该会看到如下所示的内容:

您会发现结果列在按钮下方。如果点击结果,则会转到 Facebook 上创建的活动。效果应如下所示:

您应注意有关 Facebook 活动的一些事项:

隐私

外围浅蓝色虚线边框表示该帖子仅对您可见。对好友或公众可见的帖子没有边框,但会有一个替代了锁的图标表示其分享范围的大小。您可以使用示例代码所含的隐私参数设置帖子的隐私。开发者通常不包括隐私参数,而是允许应用的默认隐私设置指示分享内容的范围大小。

操作和对象

动态的中心部分非常重要。上例显示“[用户]赞了[应用]上的一篇文章”。“赞”由您使用的 API 推动。og.likes 会创建赞动态。如果您使用的是 book.reads API,动态有可能会显示为“...正在阅读”或“...阅读...” 赞 API(也称为操作)大体等同于动词的功用。

动态的“文章”部分也十分重要。相关页面上将有标签说明文章内容以及在 Facebook 的显示方式。如果查看页面源代码,您将看到其中有个标签告知 Facebook 页面内容类型是什么:

<meta property="og:type" content="article" />

于是,Facebook 可以得知这是一篇文章,而不是一本书等等。

<meta property="og:type" content="book" />

我们使用这些标签来说明对象。对象大体等同于名词的功用。“对象”与您使用的“操作”密切相关。例如,books.reads 可包含 book 参数。fitness.runs 需要 course 对象。og.likes 的特别之处在于它可以接受任何对象。

提交操作供审核

如果您的应用要创建动态,您的操作就需要通过审核。点击应用面板左侧的应用审核,您应看到如下内容:

点击提交应用,您将看到如下屏幕:

在第 3 步中,我们讨论了动态由操作对象组成。本例中,您的动态使用了 like 操作,而这需要通过审核。(如果想要将您的应用提交至 Facebook 的应用中心,那么就需要接受应用中心审核。应用中心是用户寻找有趣应用的场所,因此,当您的应用准备就绪后,就应该考虑在此提交应用,提升应用的安装量。)

要完成提交流程,您需要提供一个应用徽标(75x75 像素的图片)、一个应用图标(16x16 像素的图片)、含屏幕截图的测试说明以及一个自动创建的测试用户。该提交流程不应阻碍您对自己的变更进行测试的能力,因为您和您添加为开发者的其他人始终可以发布并测试您自己的动态。

如果想要详细了解提交流程,请参阅了解开放图谱提交流程文档。该文档全面介绍了 Facebook 在审核应用可创建的动态时所需查看的内容。简单地举个例子,提供有关如何在应用中使用 like 操作的具体指南。我们通常会在三个工作日内完成审核。

在您没有通过应用使用过一次操作前,操作不会显示到审核列表。 因此,当您准备添加自己的操作时,您需要从应用创建至少一个操作,然后才能提交该操作供审核。