您尝试做的事情是完全可能的,尽管我通常在服务器端进行计算。您可以使用以下基本概念通过 Javascript SDK 来实现。看看这个链接:http://fbmhell.com/2011/06/facebook-like-gating-in-iframe-tabs/
基本概述是这样的:
- 您创建一个页面
- 您为促销标签创建了一个应用
- 您将应用标签添加到您的页面
当用户在您的页面上点击您的应用标签时,Facebook 将向您返回一个签名请求。
您可以使用如下函数解析出签名请求:
function grokSignedRequest() {
if (isset($_REQUEST['signed_request'])) {
$encoded_sig = null;
$payload = null;
list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
$sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
$data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
return $data;
}
return false;
}
如那篇文章中所述,如果您在该签名请求通过提供的函数运行后对其执行 print_r(),您将看到如下内容:
stdClass Object
(
[algorithm] => HMAC-SHA256
[issued_at] => 1307627872
[page] => stdClass Object
(
[id] => 116633947708
[liked] => 1
[admin] => 1
)
[user] => stdClass Object
(
[country] => us
[locale] => en_US
[age] => stdClass Object
(
[min] => 21
)
)
)
从那里,您可以访问喜欢的参数,并根据用户是否喜欢该页面来显示内容。
// call the function to parse the signed request
$sr_data = grokSignedRequest();
// check like status
if ($sr_data->page->liked==1) {
echo 'you are a fan';
} else {
echo 'you are not a fan.';
}
// check admin status
if ($sr_data->page->admin==1) {
echo '<li>Dude, you are an ADMIN! BADASS!';
}