2011-09-16 48 views

回答

0

有一種名爲getSignedRequest()的方法。調用這個方法。如果當前用戶已經是Facebook頁面的粉絲,則返回此方法:

$faceboook->getSignedRequest() 
0

您需要使用其中一個SDK實現例程。 Facebook將所謂的簽名請求傳遞給所有canvas應用程序,並在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; 
} 
?> 
0

有這樣使用FB.Event.Subscribe and edge.create的更簡單的方法。 JavaScript代碼位於http://fivespot.me/like-reveal-simple.txt

將此項添加到您的着陸頁上,在用戶喜歡yoursite.com/afterlike.html之後,更改應用程序ID和要重定向到的鏈接。

這是做這件事最簡單最有效的方法。

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, '-_', '+/')); 
    } 
?> 
相關問題