Facebook Platformはウェブサイトのソーシャライズを手助けをします。たった一行のHTMLでLike Buttonを設置して行動を促すなど、Social Pluginsを使うことが可能です。Login ButtonとRegistration Pluginを使えば、登録やサインインの実装が簡単に、もしくは不要にさえなります。また、Graph APIは任意のユーザの全ソーシャルグラフへアクセスすることを可能にし、高度にパーソナライズされたユーザ体験を提供する助けとなります。
このガイドは、これらの機能を用いてウェブアプリケーションを作る基礎を紹介します。ガイド中のサンプルは、サーバサイドの実装にはPHPを、クライアントサイドの実装にはHTML/JavaScriptを用いています。これらのサンプルは明快なので、簡単に他の言語に置き換えることができます。
目次:
Social Plugins
Social PluginsはFacebook Platformを使い始める上で最も簡単なツールです。これらのプラグインは埋め込み可能なソーシャライズ機能で、たった一行のHTMLでサイトに実装できます。Facebookによって提供されているので、これらプラグインはFacebookにログインしている全ユーザに対して、たとえ初めて訪れるユーザであってもパーソナライズされています。
もっとも重要なソーシャルプラグインはLike Buttonで、ユーザはワンクリックであなたのwebページを友人と共有できます。表示するには、下記のようなiframeタグを用います。
<html>
<head>
<title>My Great Web page</title>
</head>
<body>
<iframe src="http://www.facebook.com/plugins/like.php?href=YOUR_URL"
scrolling="no" frameborder="0"
style="border:none; width:450px; height:80px"></iframe>
</body>
</html>
「いいね!」ボタンには数多くのオプションがあり、訪問ユーザの友だちの中でページを「いいね!」した人の名前やプロフィール画像を表示することもできます。以下の「いいね!」ボタンはFacebook Developersのものです。
「いいね!」ボタンををサイト上に表示すると、それ以外のSocial Pluginを使ってユーザとより深くかかわり合う事も可能となります。Activity Feed Pluginを使えば、ユーザの友人がサイト上で「いいね!」やコメントをした直近の内容を表示できます。また、Recommendation Pluginを使えば、サイト上でユーザの友人が「いいね!」やコメントした情報を基に、ユーザに対してパーソナライズされたリコメンデーションを表示することもできます。以下の例はFacebook DeveloperのActivityとRecommendation Pluginです。
大部分のSocial Pluginはiframeタグを書き足すだけでサイト上に表示する事が来ます。中には、CommentsやLive StreamのようにXFBML( eXtended Facebook Markup Language )が必要になるものもあります。XFBMLはXML要素のセットで、あなたのHTMLページに埋め込む事でSocial Pluginの表示が可能になります。ページが読み込まれてXFBML要素が見つかると、JavaScript SDKによって指定されたプラグインがレンダリングされます。
<html>
<head>
<title>My Great Web page</title>
</head>
<body>
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
<fb:like></fb:like>
</body>
</html>
Authentication
<html>
<head>
<title>My Facebook Login Page</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
});
</script>
</body>
</html>
JavaScript SDKがロードされ、App IDが指定された状態で初期化されたら、下記のようにXFBMLの<fb:login-button>要素を使ってLogin Buttonを配置します。
<html>
<head>
<title>My Facebook Login Page</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
});
</script>
<fb:login-button>Login with Facebook</fb:login-button>
</body>
</html>
ユーザがブラウザ上でページを読み込むと、JavaScript SDKがLogin Buttonを表示します。
ユーザをログインさせる為には、3つのステップが必要です。 <html>
<head>
<title>My Facebook Login Page</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
});
</script>
<fb:login-button perms="email,user_checkins">
Login with Facebook
</fb:login-button>
</body>
</html>
パーミッションの一覧はpermissions referenceでご確認ください。求めるパーミッションの数とそれらを承認するユーザ数には、強い反比例の関係があります。多くのパーミッションを求めるほどそれを承認するユーザ数は減ってしまいますので、本当に必要なものだけを選ぶようお勧めします。
- Facebook アカウントを持たないユーザへのサポート
- Facebook が持っていない/提供しない追加情報の入力
<html>
<head>
<title>My Facebook Registration Page</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
});
</script>
<fb:registration
fields="[{'name':'name'}, {'name':'email'},
{'name':'favorite_car','description':'What is your favorite car?',
'type':'text'}]" redirect-uri="URL_TO_LOAD_AFTER_REGISTRATION">
</fb:registration>
</body>
</html>
Personalization
<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.api('/me', function(user) {
if(user != null) {
var image = document.getElementById('image');
image.src = 'http://graph.facebook.com/' + user.id + '/picture';
var name = document.getElementById('name');
name.innerHTML = user.name
}
});
</script>
<div align="center">
<img id="image"/>
<div id="name"></div>
</div>
</body>
</html>
<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>
<?php
define('YOUR_APP_ID', 'your app id ');
define('YOUR_APP_SECRET', 'your app secret');
function get_facebook_cookie($app_id, $app_secret) {
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $app_secret) != $args['sig']) {
return null;
}
return $args;
}
$cookie = get_facebook_cookie(YOUR_APP_ID, YOUR_APP_SECRET);
$user = json_decode(file_get_contents(
'https://graph.facebook.com/me?access_token=' .
$cookie['access_token']));
?>
<html>
<body>
<?php if ($cookie) { ?>
Welcome <?= $user->name ?>
<?php } else { ?>
<fb:login-button></fb:login-button>
<?php } ?>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({appId: '<?= YOUR_APP_ID ?>', status: true,
cookie: true, xfbml: true});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
</script>
</body>
</html>
Analytics
ユーザ層の統計や、あなたのサイトでユーザがどのように共有しているのかを、Insightsを使って知る事ができます