2012-04-19 21 views
4

我已經使用OpenGraph構建了一個Facebook應用程序,允許用戶在音樂會上撰寫評論,以便我定義了一個concert_id屬性,用戶可以在其中插入評論。OpenGraph:我如何在FB.api中指定一個過濾器?

現在我想顯示爲某個concert_id插入的所有評論,但找不到方法;如果我這樣做(在JS)

FB.api('/me/MY_APP:action', { limit: 0}, function(response) { 
    console.log(response); 
}); 

我得到的所有項目。這個應用程序必須通過手機消費,我認爲這是不好的,得到所有的項目,然後,只篩選我需要的concert_id。我需要做什麼才能將OpenGraph中的「where」條件應用於自定義操作?

回答

2

Facebook API不會爲特定操作返回單個發佈的對象,但這不是唯一的問題。從它的外觀來看,你試圖把所有的音樂會評論都帶進去,對吧? (也是其他用戶的意思)。

的「/我/」 Facebook的API調用將只返回由當前登錄的用戶做出的出版行爲。這不會爲你工作,你想那些所有用戶

的一部分

我可以給出的唯一建議是創建一個簡單的網絡服務,在這裏存儲所有爲各種音樂會提供的評論。使用此服務可以爲特定音樂會提供評論。 (我在我自己的應用程序中使用類似的方法進行評論)。

5

據我所知,從API和Facebook開發者頁面可以看出,無法使用公共Open Graph API通過自定義操作屬性來過濾調用。

選項1:

通過創建自定義類對象實現了類別過濾器:

我能想到的

兩個選項

如果 「檢討」 是一個自定義操作和

GET https://graph.facebook.com/me/[name_space]:review 

返回所有評論操作然後

GET https://graph.facebook.com/me/[name_space]:review/scifi_movie 
GET https://graph.facebook.com/me/[name_space]:review/action_movie 

返回特定於電影類型的操作,其中scifi_movie和action_movie是自定義對象。您需要爲每個類別創建一個對象類型。

選項2:

爲每個類別實施自定義操作,例如,

review_scifi_movie 
review_action_movie 

這些都不是特別優雅的解決方案,但也許是一個黑客有用的,如果沒有別的工作,你真的不想做客戶端過濾。

+0

嗨,謝謝你的回答,但我該如何處理打電話給 GET https://graph.facebook.com/me/[name_space]:review/scifi_movie? – Cris 2012-04-23 14:45:26

+0

[name_space]指您在Facebook上創建應用程序時指定的名稱空間。所以你的電話將是FB.api('我/ mynamespace:審查/ scifi_movie',功能(響應)等... – 2012-04-23 14:55:54

+0

好吧,但把/ scifi_movie不適用過濾器。我的應用程序允許插入評論音樂會,基於concert_id; concert_id是一個自定義屬性,但如果我打電話graph.facebook.com/me/[ns]:review/XY不起作用。當你在你的選項2中寫道,我可以實現每個項目的自定義動作,但他們超過1000,不能應用:-( – Cris 2012-04-24 08:06:11

2

我不明白JavaScript或opengraph ..

但是,當我在JAVA需要獲取由我用FQL對於任何用戶做出評語,它retrived我所有的reviews和FQL也使用獲取與Facebook相關的所有表格。

1

我不認爲你可以用JS SDK來解決這個問題。

雖然你可以在服務器上這樣做,並且由於這是一個移動應用程序(或者有一個移動版本),那麼這是將其從客戶端責任中移除的另一個很好的理由。

在服務器端,您可以要求facebook發佈已發佈的操作,對其進行過濾並返回響應。 你可以做的另一件事是將每個發佈的動作保存在你的數據庫中(在每個動作文章中,你應該從Facebook獲得一個id,只要堅持),然後你可以根據你想要的標準/需要(因爲你不再受facebook api限制)。

開放圖形的東西還是很新的,而不是成熟的,例如你不能使用FQL,對你的情況可能很方便。 儘管我認爲服務器解決方案最適合在移動設備上進行計算。

0

我並不確切地知道,但嘗試這個

如果(session.authResponse){

FB.api('/me', { 
    fields: 'name, picture' // here mention your fields 
    }, 
    function(response) { 
     if (!response.error) { 

//這裏的響應值 });

相關問題