Open Graph Protocolは、あなたのwebページがソーシャルグラフと連携することを可能にします。今のところ、実世界に存在する物(映画、スポーツチーム、セ レブ、レストランなど)を象徴するwepページ用にデザインされています。Open Graphタグをwebページに含めることで、あなたのページはFacebook Pageと 同等の物になります。つまり、ユーザがページ上のLikeボタンを押すと、ページとユーザの間にconnectionが作られます。ページはユーザプロ フィールの"Likes and Interests"セクションに表示され、更新情報をユーザへ通知することが可能になります。ページはFacebook Pageが表示されるのと同じ場所(検索結果など)に表示され、あなたのコンテンツをlikeした人をターゲットに広告を出稿することさえ可能です。 Open Graph Protocolを通じて提供されるデータが、ページがどのようにFacebook上で表示されるかを決定します。
Getting Started
webページをgraphオブジェクトにするには、Open Graph protocolの<meta>タグとLikeボタンを足す必要があります。これらのタグは、webページに関する構造化された情報を指定することができます。より多くの情報を提供すれば、その瞬間や将来、Facebook上であなたのwebページが表示される機会が増えます。以下が、映画ページのサンプルです。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:og="http://ogp.me/ns#"
xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>The Rock (1996)</title>
<meta property="og:title" content="The Rock"/>
<meta property="og:type" content="movie"/>
<meta property="og:url" content="http://www.imdb.com/title/tt0117500/"/>
<meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
<meta property="og:site_name" content="IMDb"/>
<meta property="fb:admins" content="USER_ID"/>
<meta property="og:description"
content="A group of U.S. Marines, under command of
a renegade general, take over Alcatraz and
threaten San Francisco Bay with biological
weapons."/>
...
</head>
...
</html>
Open Graph protocolはには、4つの必須プロパティがあります。
og:title
- graph上で表示されるべき、このページのタイトル(The Rockなど)og:type
- objectのタイプ(映画など)og:image
- graph上でこのobjectを象徴する画像のURL。画像サイズは最低縦横50px、アスペクト比は最高3:1である必要があります。FacebookはPNG,JPED,GIFフォーマットをサポートします。複数のog:imageタグを指定することも可能です。og:url
- graph上で恒久的にIDとして使用される、objectのURL。(http://www.imdb.com/title/tt0117500/など)
.
og:site_name
- サイトのタイトル(IMDbなど)fb:admins
もしくはfb:app_id
- サイト管理者のカンマ区切りのFacebook IDか、Facebook PlatformのアプリケーションID。fb:adminsとfb:app_idの両方を含んでも大丈夫です。
og:description
- A one to two sentence description of your page.
ユーザがLikeボタンを押してlikeした場合、以下のようなnews feedストーリーがFacebookに投稿されます。og:title に og:url で指定したリンクが貼られ、og:site_nameがサイトのドメインを指すように表示されます。og:typeが、ユーザのプロフィール上のどのカテゴリに表示されるか決めます。og:imageは、画像のサムネイルです。
objectによっては、レストランなら位置情報を付与するなど、追加のメタデータが意味をなす場合があります。og:のプレフィックスで始まるプロパティを好きなだけ使って追加情報を足すことができます。上記以外のプロパティに関してはLearn moreをご覧ください。
Adding a Like button
メタタグをwebページに追加すると、そのページと連携するLikeボタンを置けるようになります。シンプルにiframeで足すこともできますし、Javascript SDKを用いてXFBMLタグの<fb:like>を使うこともできます。
<fb:like href="http://developers.facebook.com/" width="450" height="80"/>
Likeボタンの詳細なオプションについては、こちらをご覧ください。それ以外にも、たった一行のHTMLを足すだけで social plugins を足すことが可能です。
Check your work
metaタグを正しく埋め込めていることを確認するは沢山あります。
- 公式のFacebook URL Linterは、LikeボタンなどのOpen Graph Protocolの読み込み部分と同じプログラムで解釈します。そのため、webページをクロールする時の挙動と最も近い動作をします。
- opengraphprotocol.orgは、プロトコル利用に役立つ数多くのコミュニティツールを提供しています。
Page Administration
ページを管理するには、Facebookアカウントと紐づけるか、Facebookアプリケーションと紐づける必要があります。ユーザアカウントとアプリケーションの両方を紐づけるのも可能です。
ページをFacebookアカウントと紐づけるには、カンマ区切りの管理者ユーザIDを値に持つ、fb:adminsというプロパティをページに足します。以下のように書きます。
<meta property="fb:admins" content="USER_ID1,USER_ID2"/>
管理者として紐づけられたユーザは、該当URLをLikeすると管理者として認められます。気付かぬところで管理者になってしまうのを防ぐためです。
サイトによっては、数百、もしくは数千ものページにOpen Graph Protocolを含んでいます。大量のページを含むページを管理するには、ページとFacebookアプリケーションを紐づけることができます。これにより、プログラマティックに更新情報を投稿することが可能になります。webページとFacebookアプリケーションを紐づけるには、アプリケーションIDをfb:app_idプロパティに指定します。
<meta property="fb:app_id" content="1234567"/>
Editing Meta Tags
ページのアトリビュートを更新するには、metaタグを更新します。og:titleとog:typehは最初のみ変更できることに気をつけてください。ページが50回Likeされるとtitleは固定され、10,000回Likeされるとtypeは固定されます。すでにLikeしたユーザを混乱さないための措置です。これらの制限回数の後の変更は何も影響を持たず、最初のtitle,typeが維持されます。
変更がFacebookへ反映されるようにするには、ページがスクレイピングされるようにしなくてはなりません。ページの管理者がLikeボタンをクリックするか、Facebook URL LinterにURLを入力した時にスクレイピングされます。プログラマティックに実行するには、以下のようにcURLコマンドを用います。
curl http://developers.facebook.com/tools/lint/?url={YOUR_URL}&format=json
Publishing
webページをlikeした人に対して、Facebookページに対すして投稿するのと同じように、情報を投稿することができます。投稿フォームへの導線は2種類あります。
- webページ上で、Likeボタン横の「Admin Page」をクリック
- Facebook上で、Accountタブ下のManage Pagesをクリック、ページ名横のGo To Pageをクリック
自分のwallに投稿するのと同じようにして、ユーザに対して発信することが可能です。"What's on your mind?"と書かれている部分に書き込んで投稿したときと同じように、webページをLikeした人のNews Feedに表示されます。
fb:app_idでwebページがFacebookアプリケーションと紐づいている場合は、Graph APIを用いて、ページをlikeした人に対して発信することができます。まず、アプリケーションのアクセストークンを取得します。以下のようにして取得します。
curl -F type=client_cred \
-F client_id=your_app_id \
-F client_secret=your_app_secret \
https://graph.facebook.com/oauth/access_token
このアクセストークンとwebページのURLを用いて、APIで投稿します。
curl -F 'access_token=...' \
-F 'message=Hello Likers' \
-F 'id=http://www.myopengraphpage.com/page1.html' \
https://graph.facebook.com/feed
PHPのサンプルは以下の通りです。
<?php
$ogurl = "INSERT_YOUR_OG_URL_HERE";
define(FACEBOOK_APP_ID, "YOUR_APP_ID_HERE");
define(FACEBOOK_SECRET, "YOUR_SECRET_KEY_HERE");
$mymessage = "Hello World!";
$access_token_url = "https://graph.facebook.com/oauth/access_token";
$parameters = "type=client_cred&client_id=" . FACEBOOK_APP_ID .
"&client_secret=" . FACEBOOK_SECRET;
$access_token = file_get_contents($access_token_url . "?" . $parameters);
$apprequest_url = "https://graph.facebook.com/feed";
$parameters = "?" . $access_token . "&message=" .
urlencode($mymessage) . "&id=" . $ogurl . "&method=post";
$myurl = $apprequest_url . $parameters;
$result = file_get_contents($myurl);
// output the post id
echo "post_id" . $result;
}
?>
アプリケーション名と共に投稿されます。
Recommended Meta Data
プロフィールページが持っている情報で一般的に使われている項目はlocationとcontactです。以下が、それら二つをmetaデータとして提供する例です。
Location
あなたのページがビジネス向けであったり、実世界の位置情報に結びつく物であったなら有用な情報です。住所、緯度経度、もしくはその両方で指定することができます。以下の通りです。
<html xmlns:og="http://ogp.me/ns#">
<head>
...
[REQUIRED TAGS]
<meta property="og:latitude" content="37.416343"/>
<meta property="og:longitude" content="-122.153013"/>
<meta property="og:street-address" content="1601 S California Ave"/>
<meta property="og:locality" content="Palo Alto"/>
<meta property="og:region" content="CA"/>
<meta property="og:postal-code" content="94304"/>
<meta property="og:country-name" content="USA"/>
...
</head>
Contact Information
コンタクトできる対象に関するページであれば、コンタクト情報を含むことを是非考えてみてください。以下のようにです。
<html xmlns:og="http://ogp.me/ns#">
<head>
...
[REQUIRED TAGS]
<meta property="og:email" content="me@example.com"/>
<meta property="og:phone_number" content="650-123-4567"/>
<meta property="og:fax_number" content="+1-415-123-4567"/>
...
</head>
Object types
Facebookは現在、下に列記するtypeをサポートしています。以下のようにog:typeプロパティで指定します
<meta property="og:type" content="athlete" />
Open Graph Protocolが実在するオブジェクトをサポートするようにデザインされていることを覚えておいてください。もしも対象URLがコンテンツの一部であるなら(たとえばニュース記事や写真、ビデオなど)、og:typeにはarticleを指定すべきです。articleが指定されたページは、実在するオブジェクトではないため先述の情報発信ができませんし、ユーザのプロフィールにも表示されません。
Activities
activity
sport
Businesses
bar
company
cafe
hotel
restaurant
Groups
cause
sports_league
sports_team
Organizations
band
government
non_profit
school
university
People
actor
athlete
author
director
musician
politician
public_figure
Places
city
country
landmark
state_province
Products and Entertainment
album
book
drink
food
game
product
song
movie
tv_show
UPCやISBNが割り振られている製品に関しては、og:upc, og:isbnを利用できます。製品を特定するのに役立ちます。
Websites
blog
website
article
もし独自のtypeを指定するのなら、独自のネームスペースを使うことをお勧めします。例えば、moviesite.comを運営していてディレクターとしてページを設定したい場合は、以下のようにします。
<html xmlns:moviesite="http://www.moviesite.com/ns#" >
<head>
....
<meta property="og:type" content="moviesite:director"/>
Attaching Audio and Video Data
OGPを用いたページに動画をひも付け対場合は以下のように銅がURLを指定します。og:video
- 例: "http://example.com/awesome.swf"
また、下記のような追加情報を足すこともできます。
og:video:width
- 例: "385" (max 398)og:video:height
- 例: "400" (max 460)og:video:type
- 例: "application/x-shockwave-flash"
FacebookはSWFフォーマットのみサポートしています。動画がNews Feed内に表示されるには、og:imageを指定しなくてはいけません。以下のようにです。
<html xmlns:og="http://ogp.me/ns#">
<head>
...
[REQUIRED TAGS]
<meta property="og:video" content="http://example.com/awesome.swf" />
<meta property="og:video:height" content="640" />
<meta property="og:video:width" content="385" />
<meta property="og:video:type" content="application/x-shockwave-flash" />
...
</head>
同じように、音声ファイルも指定できます。og:audio
- 例:"http://example.com/amazing.mp3"
そしてオプションとして、下記を足すことができます。
og:audio:title
- 例: "Amazing Soft Rock Ballad"og:audio:artist
- 例: "Amazing Band"og:audio:album
- 例: "Amazing Album"og:audio:type
- 例: "application/mp3"
<html xmlns:og="http://ogp.me/ns#">
<head>
...
[REQUIRED TAGS]
<meta property="og:audio" content="http://example.com/amazing.mp3" />
<meta property="og:audio:title" content="Amazing Song" />
<meta property="og:audio:artist" content="Amazing Band" />
<meta property="og:audio:album" content="Amazing Album" />
<meta property="og:audio:type" content="application/mp3" />
...
</head>
Best practices
- ページ上でLikeしやすいようにしてください。Likeする対象の近くにLikeボタンをおいてください。
- 投稿するときは、オブジェクトの「声」を扱ってください。例えば、ユーザがテレビ番組の俳優をlikeしてるのであれば、俳優たちについて投稿すべきです。番組についての情報ではありません。