您可以捕獲像按鈕事件。
Facebook elements events
例子:
<script>
window.fbAsyncInit = function() {
FB.init({appId: '127654160646013', status: true, cookie: true, xfbml: true});
FB.Canvas.setSize({ width: 520, height: 742 });
FB.Event.subscribe('edge.create', function(response) {
window.parent.location = ADDRESS;
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/lt_LT/all.js';
document.getElementById('fb-root').appendChild(e);
})();
</script>
還需要獲得用戶的風扇狀態。這裏有一個解決方案:
<?
define('FACEBOOK_APP_ID', 'xxx');
define('FACEBOOK_APP_SECRET', 'xxx');
$is_fan = false;
if (!empty($_REQUEST['signed_request'])) {
list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
$sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
$expected_sig = hash_hmac('sha256', $payload, FACEBOOK_APP_SECRET, true);
if ($sig == $expected_sig) {
if (!empty($data['page']['liked'])) {
$is_fan = true;
}
}
}
?>
有你需要的一切。請記住,您只能通過javascript重定向:
window.parent.location = ADDRESS;
該代碼看起來像是處理nonfan /粉絲頁面的一種方式?那是對的嗎?它是否也允許760個寬應用程序? – BillyMedia
粉絲頁面不能包含寬度超過520px的iframe。你需要製作更小的粉絲頁面版本。另外,這個風扇狀態提取器僅在粉絲頁面中工作(因爲應用程序不會發送$ _REQUEST ['signed_request']) – neworld