如何使用php / javascript检查用户是否喜欢该页面

时间:2011-09-11 02:53:32

标签: php facebook

  

可能重复:
  Seamless way to check if user likes page

我想很多人都被问过这个问题,但我仍然需要一个解决方案来检查登录用户是否喜欢这个页面。我尝试了很多解决方案,但没有一个主题正在运作。

我尝试使用以下代码

function parsePageSignedRequest() {
   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;
}
if($signed_request = parsePageSignedRequest()) {
  if($signed_request->page->liked) {
    echo "This content is for Fans only!";
    } else {
    echo "Please click on the Like button to view this tab!";
  }
}

我无法得到用户“喜欢”的回复。所以任何人都可以告诉我如何才能让用户“喜欢”回应。

2 个答案:

答案 0 :(得分:3)

function parse_signed_request($signed_request, $secret) 
{
  list($encoded_sig, $payload) = explode('.', $signed_request, 2);

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);

  if(strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
    $error['signed_request'] = 'Unknown algorithm. Expected HMAC-SHA256';
    return null;
  }

  // check sig
  $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  if($sig !== $expected_sig) {
    $error['bad_signed_json'] = 'Bad Signed JSON signature!';
    return null;
  }

  return $data;
}

function base64_url_decode($input) {
  return base64_decode(strtr($input, '-_', '+/'));
} 

$signed_request_data = parse_signed_request($_REQUEST['signed_request'],$fb_app_secret);

if($signed_request_data['page']['liked']) {
  print "Content for Useres who have liked your page...";
}

答案 1 :(得分:2)

我认为您必须使用FQL,并专门查询page_fan表 请阅读我在上面的链接中提到的F​​B文档。 为了构建此类FQL查询,您可以访问此linked answer 多数民众赞成在现在我可以告诉,希望它有所帮助! 编辑:
@ MuckyBuzzwoo的答案也适用于页面标签, signed_request 有一个赞成字段$data['page']['liked'],显示当前访问该标签的用户是否喜欢该页面或不