一尘不染

如何使用Facebook的API检查用户是否喜欢我的Facebook页面或URL

javascript

我只想检查用户是否喜欢iFrame应用程序中带有javascript的页面。

FB.api({
    method:     "pages.isFan",
    page_id:        my_page_id,
},  function(response) {
        console.log(response);
        if(response){
            alert('You Likey');
        } else {
            alert('You not Likey :(');
        }
    }
);

返回值:False
但是我是页面的粉丝,所以它不应该返回true吗?


阅读 437

收藏
2020-04-25

共1个答案

一尘不染

我也把这根头发撕掉了。仅当用户授予了不理想的扩展权限时,您的代码才起作用。

简而言之,如果您打开OAuth2.0forCanvas高级选项,Facebook将$_REQUEST['signed_request']在选项卡应用程序中与请求的每个页面一起发送。如果您解析了signed_request,则可以获得有关该用户的一些信息,包括他们是否喜欢该页面。

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!";
    }
  }
2020-04-25