2011-06-23 121 views
3

我在此處使用最新的Facebook C#SDK(撰寫本文時爲v5.0.40):http://facebooksdk.codeplex.com/使用Facebook C#SDK無法獲取頁面「like」狀態

我在Facebook上創建了一個測試iFrame應用程序,並且運行CSASPNETFacebookApp示例,以便它顯示Facebook中當前登錄用戶的名稱。

我現在想要做的是在我的iFrame中顯示不同的內容,具體取決於用戶是否「喜歡」該頁面。但signed_request似乎從未包含該信息。從我在FacebookSignedRequest.cs中可以看到的,如果算法是AES-256-CBC HMAC-SHA256,我將只獲得包含頁面信息的有效載荷,但我只能得到返回的HMAC-SHA256

我在做什麼錯?我如何獲取它返回頁面信息?在Facebook上設置我的應用程序或.NET應用程序的配置問題是否有問題?

在此先感謝。

+0

+1我也想這樣做。你是否設法從signed_request獲取這些信息? – Andy

回答

0

您可以使用FQL來實現此目的。我剛做這個使用下面的語句:

var the_query = FB.Data.query("SELECT uid FROM page_fan WHERE page_id = {0} and uid={1}", page_id, user_id);

爲了這個工作,我不得不要求用戶「允許」我的應用程序,使我不得不權限檢查,如果他們希望看到這一頁。然後,它檢查的結果並顯示一個簡單的情況下,有必要<div>

the_query.wait(function (rows) { 
    if (rows.length == 1 && rows[0].uid == user_id) { 
     $("#myLikeContent").show(); 
    } else { 
     $("#myNoLikeContent").show(); 
    } 
}); 
2

尼爾·奈特的答案是技術上是正確的,你可以使用FQL查找用戶是否喜歡一個網頁,它確實幫助讓我走上正確的道路。然而,我的問題其實更多的是建立而不是代碼。我不明白的是,如果您的應用在「頁面上下文」內運行,您只會收到簽名請求中的「喜歡」信息。如果你設置正確,那麼Facebook會通過你的應用程序的標誌,而用戶不需要「允許」你的應用程序。

的步驟是:

(1)在Facebook的

創建您的iframe應用

(2)設置一個選項卡URL在應用程序設置您的應用程序。這是父頁面在左欄中生成鏈接以轉到您的應用時將使用的內容。 (3)轉到「應用程序配置文件頁面」,該URL將如下所示:http://www.facebook.com/apps/application.php?id=12345其中12345是您的應用程序ID。

在徽標圖像下方的左側欄中應該有一個「添加到頁面」的鏈接。如果您點擊該鏈接,您將看到您是管理員的頁面列表。在你的應用中選擇你想要的頁面。

現在,如果您導航到您的頁面,您應該在左欄中獲取到您的應用的鏈接。只有當點擊該鏈接時,您纔會獲得頁面標識,並將狀態傳遞給您的應用程序。

希望這可以幫助有同樣問題的人。

3
var fb = new FacebookClient("access_token"); 

dynamic parameters = new ExpandoObject(); 
parameters.method = "pages.isFan"; 
parameters.page_id = "{you page id}"; 

dynamic result = fb.Get(parameters); 
bool isFan = result == true; 
+0

現在這個作品... – DarthVader

相關問題