私たちはこれを数回行いましたが、かなりうまくいっているようです。XFBML を使用してLike ボタン ウィジェットを生成し、JS SDK を使用して XFBML をレンダリングし、Facebook イベントをサブスクライブします。以下のコードサンプル:
編集:ページが読み込まれたときにユーザーがファンであるかどうかを検出しようとしており、FBfb_page_id
はアドレスクエリ文字列に渡すことでキャンバスが読み込まれたときにユーザーから直接取得できるようにする機能を廃止したため、必要になりますユーザーがページのファンダムをテストするためのアプリケーションのインストール。それは確かにあなたのアプリケーションに多くの摩擦を追加しますが、それは今のところです-私は推測します.
<?php
require 'facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'YOUR APP ID',
'secret' => 'YOUR APP SECRET',
'cookie' => false,
));
try
{
$session = $facebook->getSession();
if (empty($session['uid']))
{
throw new Exception("User not connected to application.");
}
$is_fan = $facebook->api(array(
'method' => 'fql.query',
'query' => "SELECT uid, page_id FROM page_fan WHERE uid = {$session['uid']}"
));
if (false == $is_fan || count($is_fan) == 0) // 0 results will be returned if the user is not a fan
{
$is_fan = false;
}
else
{
$is_fan = true;
}
}
catch (FacebookApiException $e)
{
/**
* you don't have an active user session or required permissions
* for this user, so rdr to facebook to login.
**/
$loginUrl = $facebook->getLoginUrl(array(
'req_perms' => 'user_likes'
));
header('Location: ' . $loginUrl);
exit;
}
?>
<html>
<head>
</head>
<body>
<? if (empty($is_fan)): //user is not a fan. ?>
<fb:like href="http://www.facebook.com/your-facebook-page"
show_faces="true"
width="400">
</fb:like>
<? else: ?>
Yay! You're a fan!
<? endif; >?
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js" type="text/javascript">
</script>
<script type="text/javascript">
FB.init({
appId: '<?= FB_APP_ID; ?>',
cookie: true,
status: true,
xfbml: true
});
// Subscribe to the edge creation event, from Facebook
FB.Event.subscribe('edge.create', function(response)
{
alert("Congratulations! We are so excited that you are a fan now! woot!")
});
</script>
</body>
</html>
さて、最終的にすべてをストレートなマークダウンでフォーマットしました。全然痛くなかった.. (sike) :|