2011-09-21 70 views
0

我想將「like」按鈕集成到我的網站中,但我無法理解網絡上提供的信息。我讀過這篇文章,該文章在另一篇文章中,但有一些問題:http://www.saschakimmel.com/2010/05/how-to-capture-clicks-on-the-facebook-like-button/。我之前也發佈過這個問題,我收到的答案與我的要求無關。我的原始問題在這裏被問到:Facebook Integration into website與Facebook整合如

我已經在Facebook上設置了一個「頁面」,並且從我在上面的鏈接中理解的,您需要設置一個「App」來獲取API密鑰。我不明白的是,如果我使用這個API Key,它將指向我新創建的「App」,它沒有粉絲羣。我如何鏈接此API密鑰(或通過頁面管理員設置另一個密鑰),以便我可以讓用戶「喜歡」真正的Facebook頁面?

我想在用戶喜歡頁面的時候運行一些JavaScript函數,但是我對API函數調用的內容也有點困惑,以及這些函數是否返回true/false值?我只想真的想運行這些js功能,如果用戶還不是已經喜歡這個頁面的話。

希望這一切都有意義,希望能夠提供任何解釋讓我指出正確的方向。

回答

0

從我所看到的,你的其他問題的答案涵蓋了你需要知道的大部分內容。有一兩件事我注意到你對此有何評論:

「我試圖設置在後臺促銷代碼,當有人 ‘喜歡’頁面」

周圍有一些棘手的條款及條件這個。在繼續之前查看這裏:https://developers.facebook.com/docs/guides/policy/examples_and_explanations/Rewarding_Users/

如果您從添加類似按鈕開始,那麼您需要單獨檢查每個登錄的Facebook用戶,以確定它們是否與您的頁面連接。爲此,可以使用API​​調用來獲得自己的喜好,並檢查在響應你的頁面ID做:

FB.api('/me/likes', function(response) { 
    console.log(response); 
}); 

如果你找到一個匹配,繼續進行宣傳活動,否則顯示類似按鈕。

+0

這似乎是一個相當簡單的任務。從我讀到的關於API的內容來看,你需要一個應用ID來使用它,這是正確的嗎?我無法理解應用程序和頁面之間的區別。對於我想要做的簡單任務,我是否真的需要設置「應用程序」?如果是這樣,我能夠將我現有的頁面鏈接到這個應用程序或其他東西?我看不到你是如何做到這一點的,顯然我不希望人們「喜歡」我創建的一些無所事事的應用程序,也不想去我的頁面本身。 –

+0

你不需要一個應用程序ID就可以擁有一個像按鈕一樣。您確實需要一個應用程序ID才能在臉譜圖上進行查詢,並使用其應用程序界面。頁面是用戶可以連接的Facebook上的實體。應用程序是Facebook上的一個實體,用戶可以與之連接,並可以連接回他們,並代表他們採取行動;比如發佈照片和更新等。如果您想以編程方式獎勵您的用戶,而不是僅僅在他們喜歡它之後在頁面上發佈您的獎勵,那麼您將需要一個應用程序 – Abby

+0

,因此可以將「應用程序」鏈接到我的頁?我不能看到除了使用API​​以外的任何其他方式。 –

0

你想要做的是完全可能的,儘管我通常在服務器端進行計算。您可以使用下面的基本概念通過Javascript SDK來完成。看看這個鏈接:http://fbmhell.com/2011/06/facebook-like-gating-in-iframe-tabs/

的基本概況是這樣的:

  1. 您創建一個頁面
  2. 您爲您的促銷標籤創建一個應用程序
  3. 您添加應用程序選項卡,您

當用戶在您的頁面上點擊您的應用程序選項卡時,Facebook會向您返回已簽名的請求。

您可以分析出,使用這樣的函數簽名的請求:

function grokSignedRequest() { 
    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; 
} 

正如該文章中提到的,如果你做的print_r()上簽名的請求,它已經通過所提供的功能,運行後,你會看到這樣的事情:

stdClass Object 
(
    [algorithm] => HMAC-SHA256 
    [issued_at] => 1307627872 
    [page] => stdClass Object 
     (
      [id] => 116633947708 
      [liked] => 1 
      [admin] => 1 
     ) 

    [user] => stdClass Object 
     (
      [country] => us 
      [locale] => en_US 
      [age] => stdClass Object 
       (
        [min] => 21 
       ) 
     ) 
) 

從那裏,你可以訪問喜歡的參數,並根據用戶是否已經喜歡的頁面顯示內容。

// call the function to parse the signed request 
$sr_data = grokSignedRequest(); 

// check like status 
if ($sr_data->page->liked==1) { 
    echo 'you are a fan'; 
} else { 
    echo 'you are not a fan.'; 
} 

// check admin status 
if ($sr_data->page->admin==1) { 
    echo '<li>Dude, you are an ADMIN! BADASS!'; 
} 
+0

hey mate,在JavaScript API中沒有功能可以爲我們工作嗎?當然很多人都想做這個,我不明白爲什麼沒有一個簡單的函數來調用這個?是否有任何其他的示例代碼,你有其他的PHP?該網站是在ASP中,並可以使用JavaScript來做任何Facebook調用 –

+0

你可以嘗試尋找了解Javascript SDK中的文檔:http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/ - 不確定在粉絲頁面選項卡中的「連接」是否會被視爲粉絲/無粉絲,但我有點不這麼認爲,我不認爲我這是通過Javascript單獨完成的一種方式。 – snipe