我想改變我的網頁內容,當用戶點擊一個像按鈕(它直接重新加載頁面的新內容)。內容沒有粉絲給內容粉絲
我可以做到這一點,但只有當我先點擊登錄按鈕才能獲取我的帳戶的基本信息。我不想要這一步。
我想要的例子是https://www.facebook.com/Dior(tab Dior VIII)。
我想改變我的網頁內容,當用戶點擊一個像按鈕(它直接重新加載頁面的新內容)。內容沒有粉絲給內容粉絲
我可以做到這一點,但只有當我先點擊登錄按鈕才能獲取我的帳戶的基本信息。我不想要這一步。
我想要的例子是https://www.facebook.com/Dior(tab Dior VIII)。
有一種名爲getSignedRequest()
的方法。調用這個方法。如果當前用戶已經是Facebook頁面的粉絲,則返回此方法:
$faceboook->getSignedRequest()
您需要使用其中一個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;
}
?>
有這樣使用FB.Event.Subscribe and edge.create的更簡單的方法。 JavaScript代碼位於http://fivespot.me/like-reveal-simple.txt
。
將此項添加到您的着陸頁上,在用戶喜歡yoursite.com/afterlike.html
之後,更改應用程序ID和要重定向到的鏈接。
這是做這件事最簡單最有效的方法。
一頁獲得簽名的請求。對此進行解碼,以確定用戶是否喜歡該頁面。在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, '-_', '+/'));
}
?>