オブジェクトとは、アプリケーション内でユーザがつながりを持つことができる対象をさします。Facebook上にオブジェクトが生成されるのは、任意のオブジェクトタイプを表すOpen Graphタグを持つウェブページを、Facebookがスクレイピングするタイミングです。


Creating Objects

Open Graphオブジェクトとは単純に、Open Graphメタタグが埋め込まれたウェブページのことです。Open Graphオブジェクトを生成するには、Dev AppのOpen Graphセクションでオブジェクトを定義してください。ツール上でオブジェクトを生成したら、Open Graphメタタグを用いてオブジェクトを表すウェブページを生成しますが、一般公開されている必要があります。Dev AppのGet Codeをクリックするとコードが生成されますので、これを用いて任意のオブジェクトに対するアクションを投稿できます。オブジェクトに対するアクションが最初に投稿されたタイミングでページがクロールされ、メタタグを取得してユーザとオブジェクトをアクションによって紐づけます。

Markup your web page

Open Graphタグをウェブページに追加し、それぞれのオブジェクト固有の情報で埋めます。以下はレシピオブジェクトのメタタグのサンプルです。
 <meta property="fb:app_id"           content="YOUR_APP_ID" /> 
 <meta property="og:type"             content="recipebox:recipe" /> 
 <meta property="og:title"            content="Chocolate Chip Cookies" /> 
 <meta property="og:image"            content="http://www.example.com/cookies.png" /> 
 <meta property="og:description"      content="Best Cookies on Earth!" /> 
 <meta property="recipebox:chef" content="http://www.example.com/john_smith"/>

Determiner Property

og:determinerプロパティをメタタグに追加して、オブジェクトのアーティクルを定義します。このプロパティの値は、オブジェクトのインスタンス(たとえばChocolate Chip Cookiesなど)を言及する際に使われます。オブジェクト自身(recipeなど)を言及する際に使われる限定詞(determiner)はconfiguring object typesで説明されている通り、DevAppで設定されます。

利用できる値は以下の通りです。

  • a
  • an
  • the
  • auto (a, anの中から推測する)

このメタタグは必須ではありません

 <meta property="og:determiner" content="the" /> 

Connecting to Objects

アプリケーションがアクションを通じてユーザとオブジェクトの間に繋がりを持たせるとき、Facebookはウェブページをクロールし、メタタグを読み取ってユーザとオブジェクトを結びつけます。このクローリングが実行されるタイミングは以下の通りです。

  • 初めてユーザがオブジェクトに対してアクションを取ったとき(例えば、 like, listen, read、もしくは他のカスタムアクション)。詳細はcreate actionsをご覧ください。
  • Object DebuggerでObject URLの文法チェックするとき
  • linter APIでObject URLの文法チェックするとき

Note

同時にオブジェクトを生成/公開するホスティングサービスや開発プラットホームによっては、オブジェクトが存在しないと言うエラーを受けるかもしれません。これはシステムによって存在する競合のためです。

(a) アクションを投稿する前にオブジェクトが複製済みであるのを確認する

(b) 複製のタイムラグ(たとえば15-30秒)のあいだ少し遅延させる

などの対応をお勧めします。


Reading Objects

以下のOpen Graph APIによって、オブジェクトインスタンスのメタデータを取得できます。

GET /{object-instance-id}

例えば下記のようになります。

https://graph.facebook.com/1015012577744568

Response:

{
    "id": "1015012577744568"
    "type": "recipebox:recipe", 
    "url": "http://www.example.com/cookies.html", 
    "description": "Best Cookies on Earth!", 
    "title": "Chocolate Chip Cookies", 
    "image": "http://www.example.com/cookies.png”
}

Reading a set of objects

任意のアクションによってユーザと結びついているオブジェクトの配列を取得する

GET /me/{namespace}:{action-type}/{property-name}

例えば下記のようになります。

https://graph.facebook.com/me/recipebox:cook/recipes

Response:

{
    data: [ /* array of objects */ ]
}

Updating objects

オブジェクトのタイトル、画像、もしくは他のカスタムプロパティを更新するには、メタタグを更新し、Object Debuggerを用いてFacebookに再度クロールさせる必要があります。もしくは、次にユーザが該当URLに対してアクションを取るか、下記のAPIを叩きます。

POST /id={object-id or object-url}&scrape=true

例えば下記のようになります。

curl -X POST \
     -F "id={object-url OR object-id}" \
     -F "scrape=true" \
     "https://graph.facebook.com"

レスポンスはオブジェクトの値をJSONで返します。

{
    "id": "10150163559423668"
    "type": "recipebox:recipe", 
    "url": "http://www.example.com/cookies.html", 
    "description": "Best Cookies on Earth!", 
    "title": "Chocolate Chip Cookies", 
    "image": "http://www.example.com/image/cookie.png”
}

idパラメータの値はオブジェクトURL、もしくはオブジェクトのFacebook IDが入ります。オブジェクトに対するアクションが50個になるまではタイトルを変えることができます。オブジェクトのプロパティは常に編集できます。


Debugging Objects

Object Debuggerを用いて、オブジェクトが適切なメタタグを持っているか確認します。アクションを生成する前にエラーを修正してください。


Moving Objects

Facebook Graph上にオブジェクトが生成されてからは、オブジェクトURLを変更することはできません。URLを更新したい場合は、旧URLから新URLへリダイレクトするようにしてください。オブジェクトのURLは同じもののままです。