オブジェクトとは、アプリケーション内でユーザがつながりを持つことができる対象をさします。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"/>
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
同時にオブジェクトを生成/公開するホスティングサービスや開発プラットホームによっては、オブジェクトが存在しないと言うエラーを受けるかもしれません。これはシステムによって存在する競合のためです。
(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は同じもののままです。