【问题标题】:Content no fan to content fan内容没有粉丝到内容粉丝
【发布时间】:2014-01-20 07:40:14
【问题描述】:

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

我可以这样做,但前提是我首先单击登录按钮以获取我帐户的基本信息。我不想要求这一步。

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

【问题讨论】:

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


    【解决方案1】:

    您需要使用其中一个 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】:

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

       $faceboook->getSignedRequest()
      

      【讨论】:

        【解决方案3】:

        使用FB.Event.Subscribe and edge.create 有一种更简单的方法。 JavaScript 代码位于http://fivespot.me/like-reveal-simple.txt

        将此添加到您的登录页面,更改应用程序 ID 和您想要重定向到的链接,在用户喜欢它显示yoursite.com/afterlike.html 的位置之后。

        这是最简单最有效的方法。

        【讨论】:

          【解决方案4】:

          页面获得签名请求。对此进行解码以了解用户是否喜欢该页面。在 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, '-_', '+/'));
              }
          ?>
          

          【讨论】:

            猜你喜欢
            • 2012-01-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多