http://developers.facebook.com/docs/channels/

Facebook Platformを使う利点の一つは、あなたのウェブサイトやアプリケーションをFacebookユーザが共有したときの潜在的なリーチの長さです。友達が支持する物事には強い影響力があるため、Facebook Platformを介したコミュニケーションは、高品質の製品の著しい成長を助けることが出来ます。このドキュメントは利用可能なチャンネルの概略を紹介しますので、あなたの目指すユーザ体験に役立つ最適なものを見つけることが出来ます。特に記していない限り、全てのチャンネルはウェブサイト、モバイル、Facebook上のアプリケーションの全てに使うことが出来ます。

News Feed

News Feedは、ユーザがログイン直後に見ることもので、Facebook体験の中核を成します。このNews Feedストリームに投稿する手段は数種類あります。Feed DialogFeed Graph objectLike Buttonです。


Feed Dialog: Prompt Users to Publish

ストリームに投稿するのに勧められる方法はFeed Dialogです。あなたのアプリケーションへログインしたり、パーミッションを許可したりすること無しに、ユーザに対して投稿を促すことが出来ます。ユーザが投稿する場合、投稿内容はユーザのプロフィールとユーザの友達のNews Feedに現れます。

アプリケーションから投稿されたストーリーには、投稿したアプリケーションへのリンクやリッチな付随情報が含まれます。以下は、ユーザに対して投稿を促す基本例です。

<html>
<head>
<title>My Great Website</title>
</head>
<body>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js">
</script>
<script>
FB.init({
appId:'YOUR_APP_ID', cookie:true,
status:true, xfbml:true
});

FB.ui({ method: 'feed',
message: 'Facebook for Websites is super-cool'});
</script>
</body>
</html>
このページが読み込まれると、ユーザ投稿用のダイアログが、JavaScript SDKによって下記画像のように表示されます。ダイアログの詳しい仕様については、Feed Dialogをご覧ください。

上記コードは下記のようなダイアログで投稿を促します。

web_dialog
 
Feed Graph Object: Publish via the Graph API

ユーザのnews feedへの投稿に際して、カスタマイズされたユーザ体験を提供したい場合もあります。ユーザがあなたのアプリケーションを認証し、publish_streamパーミッションを与えていれば、Graph APIを通じて投稿することができます。使えるフィールドはfeed dialogのフィールドと同じです。以下のPOST送信は、上記の例と同じ結果をもたらします。


https://graph.facebook.com/<username>/feedへPOSTリクエストを送信することで、ユーザのwallへ投稿できます。

curl -F 'access_token=...' \
-F 'message=Facebook for Websites is super-cool.' \
https://graph.facebook.com/<username>/feed

完全なドキュメントは、postingattachmentsFacebook Platform Policiesをご覧ください。


Like button

Likeボタンを使うと、アプリケーションやウェブサイト上でユーザが興味を持った内容をFacebook上で共有させることができます。Likeストーリーはユーザのwallとユーザの友達のNews Feedに現れます。


さらに、Open Graph protocolでmeta情報を提供していれば、あなたのwebページはFacebook Pageと同じように扱われます。つまり、ユーザがあなたwebページ上のLikeボタンを押せば、webページとユーザの間に繋がりが生まれます。そのwebページは、ユーザのプロフィール上の"Likes and Interests"セクションに現れ、また、ユーザのNews Feedに対して更新情報を配信することも可能です。

Likeボタンの実装には2種類あります。XFBMLとIframeです。XFBMLバージョンは多用途向きですがJavaScript SDKを必要とします。

Requests

Requestsは、ユーザに対して他のユーザを招待させるのに最適な方法です。RequestsはFacebook notificationとdashboardsを通じて知らされるため、Requestsを送られたユーザがFacebook上のどこにいようと気付くようになっています。アプリケーション上で特定の行動を起こすように、ユーザから他ユーザに対して促すことにも使えます。たとえば、ギフトの受け取りやクエストをクリアするためのヘルプを求めるなどです。

アプリケーションから送信できるrequestsには2種類あります。

  • User-generated requests: ユーザがリクエストダイアログ上で明示的に指示した場合に送られます。受信者のブックマーク数が更新されます。 Request Dialog.を使って実行できます。
  • App-generated requests: アプリケーションを承認したユーザに対してのみ送信することができます。開発者は、Graph APIを使って送信することになります。ブックマーク上のカウントを更新して、ユーザにアプリケーションへ戻るよう促す時に使うことが可能です。例えば、ユーザの友達がゲーム上でターンを終え、あなたのターンへと切り替わる場合など。
下記のHTML/JavaScriptの例は、User-generatedリクエストを送信する例です。
 <html>
<head>
<title>My Great Website
</head>
<body>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js">
</script>
<script>
FB.init({
appId:'YOUR_APP_ID', cookie:true,
status:true, xfbml:true
});

FB.ui({ method: 'apprequests',
message: 'Here is a new Requests dialog...'});
</script>
</body>
</html>

この例は、Request Formを表示するのにJavaScript SDKを使っています。上記例が読み込まれると、下記のようなリクエストフォームが開きます。


new-requests
 

アプリケーションからユーザに直接リクエストを送りたい場合(App-generated request)、Graphオブジェクトのapprequestコネクションに対してPOSTリクエストを送ります。

<?php 

$app_id = YOUR_APP_ID;
$app_secret = YOUR_APP_SECRET;

$token_url = "https://graph.facebook.com/oauth/access_token?" .
"client_id=" . $app_id .
"&client_secret=" . $app_secret .
"&grant_type=client_credentials";

$app_access_token = file_get_contents($token_url);

$user_id = THE_CURRENT_USER_ID;

$apprequest_url ="https://graph.facebook.com/" .
$user_id .
"/apprequests?message=’INSERT_UT8_STRING_MSG’" .
"&data=’INSERT_STRING_DATA’&" .
$app_access_token . “&method=post”;

$result = file_get_contents($apprequest_url);
echo(“App Request sent?”, $result);
?>
messageパラメータはリクエスト内容を示すUTF-8文字列です。dataパラメータは、リクエストを実行する上で必要となるデータを保持する部分です。

送信されたら、アプリケーションのbookmarkに出る数値や、Dashboard.の横に出る数字で知らされます。


bookmark_counter
 

ユーザがブックマークをクリックしてアプリケーションをロードすると、URLのクエリストリングに二つのパラメータを渡します。refとcountです(ref=bookmark&count=1など)。refパラメータはbookmarkという値を持ち、countパラメータはブックマークにセットされたカウントを持ちます。


ユーザがdashboard上でリクエストを受けると、request_idsパラメータでrequest idを渡します。

Facebook.com上のアプリケーションで良い流儀とされているのは、ユーザが未対応のリクエストがあるかどうか、次の行動に移す前にチェックして対応させると言うものです。この方法の場合、ユーザはあなたのアプリケーションから離れずにリクエストに応えることが可能です。特定のユーザがどれだけのリクエストに未対応であるかは、Graph APIUser Objectのapprequestsコネクションにアクセスして確認できます。


以下のPHPサンプルは、ユーザの未対応リクエストにアクセスし、対応したものを消しています。

 <?php 

$app_id = 'YOUR_APP_ID';
$app_secret = 'YOUR_APP_SECRET';

$token_url = "https://graph.facebook.com/oauth/access_token?" .
"client_id=" . $app_id .
"&client_secret=" . $app_secret .
"&grant_type=client_credentials";

$access_token = file_get_contents($token_url);

$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
$user_id = $data["user_id"];

//Get all app requests for user
$request_url ="https://graph.facebook.com/" .
$user_id .
"/apprequests?" .
$access_token;
$requests = file_get_contents($request_url);

//Print all outstanding app requests
echo '<pre>';
print_r($requests);
echo '</pre>';

//Process and delete app requests
$data = json_decode($requests);
foreach($data->data as $item) {
$id = $item->id;
$delete_url = "https://graph.facebook.com/" .
$id . "?" . $access_token;

$delete_url = $delete_url . "&method=delete";
$result = file_get_contents($delete_url);
echo("Requests deleted? " . $result);
}
?>

Automatic Channels

Facebook Platformのアプリケーションやwebサイトへのトラフィックを増やすには、上記チャンネルの他に、アプリケーションを使う度に自動化された動作が実行されます。これを実行するために特別に何かをする必要はありません。それぞれのチャンネルは、それぞれのユーザに対して最適なコンテンツを表示して行動させるようにデザインされています。Facebookが製品として成長するにつれ、これらのチャンネルは変化し、進化すると思ってください。現状の自動化されたチャンネルには、下記のものがあります。

Bookmarks

Bookmarksは、Facebook上でユーザが簡単にアプリケーションへ戻って行けるようナビゲートします。これはユーザがアプリケーションを利用し始める段階で自動的に追加されます。ホームページ上の左カラムと、アプリケーションのキャンバスページの右カラムに表示されます。


bookmark
 

Notifications

Notifications on Facebookは、ユーザに関わるコンテンツの変化を知らせる、目立ちつつもうるさすぎない通知機能です。アプリケーションからのリクエストがnotificationで知らされたりもします。


requests_notification
 

Dashboards

Facebook.com上のアプリケーションには、2種類あるダッシュボードのうち片方に出る機会があります。 Apps DashboardsGames Dashboardです。Dashboardsは、Facebookのホームページ上にブックマークされたリンクと同じように表示され、リクエストを表示したり、最近使ったアプリケーションや友人が最近使ったアプリケーションを表示したりします。Application DirectoryはDashboardからもアクセス可能です。


Usage Stories

Facebook上での多くの行動は友達と共有されます。似たように、友達が使っている人気のゲームを共有するために色々な種類のフィードストーリーが投稿されもします。これらのストーリーは特に、まだアプリケーションを使い始めていないユーザに対して、あなたのアプリケーションを見つける機会を与えるために投稿されます。

App Profiles & Search

個々のアプリケーションには専用のApp Profile Page(例えば Facebook Live)が与えられます。このページは他のPageやFacebook上のプロフィールページと似ていて、WallやInfoタブが置かれています。ユーザがあなたのアプリケーションを探す場合、このページが検索結果に表示されます。このページから、ユーザはアプリケーションへ移動したりPageをLikeするようにナビゲートされます。 update usersを選択して、アプリケーションをLikeしたユーザに対してアプリケーションの新着情報を知らせることも可能です。