1
我看到了幾個類似的問題的頁面,但我認爲這是新的......檢查用戶喜歡通過圖形API
我想對將包含一個Facebook像按鈕的博客中添加酥料餅Facebook頁面並且只會顯示用戶是否已經不喜歡Facebook頁面。
通過閱讀文檔,應該可以通過Graph API pages.isFan方法實現,但這是否需要用戶授予權限?如果是這樣,可能沒有應用程序請求權限,而是優雅地失敗?
任何幫助非常感謝。
我看到了幾個類似的問題的頁面,但我認爲這是新的......檢查用戶喜歡通過圖形API
我想對將包含一個Facebook像按鈕的博客中添加酥料餅Facebook頁面並且只會顯示用戶是否已經不喜歡Facebook頁面。
通過閱讀文檔,應該可以通過Graph API pages.isFan方法實現,但這是否需要用戶授予權限?如果是這樣,可能沒有應用程序請求權限,而是優雅地失敗?
任何幫助非常感謝。
您可以判斷用戶是否喜歡Facebook上的請求中發送的signed_request中的頁面。您不必查詢圖形api。
我們使用C#和得到它,像這樣:在頁面
protected void Page_Load(object sender, EventArgs e)
{
Result = DecodePayload(Request["signed_request"]);
}
public JObject DecodePayload(string payload)
{
var encoding = new UTF8Encoding();
var decodedJson = payload.Split('.')[1].Replace("=", string.Empty).Replace('-', '+').Replace('_', '/');
var base64JsonArray = Convert.FromBase64String(decodedJson.PadRight(decodedJson.Length + (4 - decodedJson.Length % 4) % 4, '='));
Json = encoding.GetString(base64JsonArray);
var result = JObject.Parse(Json);
return result;
}
然後
<% if (Result["page"] == null || Result["page"]["liked"] == null || !(bool) Result["page"]["liked"])
{%>
Content if liked
<%}%>
一個更重要的事情爲3月30日的頁面佈局正在發生變化,以時間軸和你應該知道目前的一個錯誤,當它看到這個時不刷新頁面:
Does anyone know a fix for the lack of page refresh on facebook timeline pages when liking?
UPDATE
用於解碼所述簽名的請求的PHP是:
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}