内容没有粉丝到内容粉丝

时间:2011-09-16 13:03:27

标签: facebook facebook-graph-api facebook-page

当用户点击“赞”按钮时,我想更改页面内容(它会直接用新内容重新加载页面)。

我可以这样做,但只有先点击登录按钮才能获得我帐户的基本信息。我不想要这一步。

我想要的例子是https://www.facebook.com/Dior(标签Dior VIII)。

4 个答案:

答案 0 :(得分:0)

有一个名为getSignedRequest()的方法。调用此方法。如果当前用户已经是Facebook页面的粉丝,则此方法返回:

 $faceboook->getSignedRequest()

答案 1 :(得分:0)

您需要使用其中一个SDK实现例程。 Facebook将所谓的已签名请求传递给所有画布应用程序,并在iframe中运行。除其他外,它包括当前用户喜欢该页面的信息。您需要检索信息并检查类似状态。

对于PHP,这将是这样的:

<?php
require(facebook.php); // include Facebook PHP SDK

$app_id = "your_app_id";
$app_secret = "your_app_secret";

$facebook = new Facebook(array(
  'appId' => $app_id,
  'secret' => $app_secret,
  'cookie' => true
));

$signed_request = $facebook->getSignedRequest();

if($signed_request = $this->parsePageSignedRequest()) {
  if($signed_request->page->liked) {
    // output fan content
  } else {
    // output non-fan content
  }
}

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;
}
?>

答案 2 :(得分:0)

使用FB.Event.Subscribe and edge.create可以更轻松地执行此操作。 JavaScript代码位于http://fivespot.me/like-reveal-simple.txt

将此添加到您的目标网页,在用户喜欢yoursite.com/afterlike.html之后更改应用程序ID和您要重定向的链接。

这是最简单有效的方法。

答案 3 :(得分:0)

页面获得已签名的请求。对此进行解码以确定用户是否喜欢该页面。在PHP中:

<?php
    $signedRequestObject = parse_signed_request( $_POST["signed_request"],YOUR_APPLICATION_SECRET );

    if ($signedRequestObject["page"]){
        // This means this signed_request was generated on a page.
        if ($signedRequestObject["page"]["liked"]){
            // the page was liked
        }
    }

    //Used functions
    function parse_signed_request($signed_request, $secret) {
        list($encoded_sig, $payload) = explode('.', $signed_request, 2);
        $sig = $this->base64_url_decode($encoded_sig);
        $data = json_decode($this->base64_url_decode($payload), true);
        if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
            echo  'Unknown algorithm. Expected HMAC-SHA256 : ';
            return false;
        }
        $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
        if ($sig !== $expected_sig) {
            echo = 'Bad Signed JSON signature!';
            return false;
        }
        return $data;
    }

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