2012-05-17 50 views
0

我製作一個頁面標籤應用程序。應用程序顯示一些項目,每個項目都有一個類似的按鈕。像連接到相應url項目的按鈕一樣。我需要向喜歡的用戶展示,這些元素中收集了10個以上喜歡的文字。 所以,我寫這樣的代碼:我如何知道當前用戶喜歡對應的鏈接?

// Get a link statistics 
$link_stat = $fb->api(
    array(
     'method' => 'fql.query', 
     'query' => 'SELECT like_count FROM link_stat WHERE url="http://myurl.com/item1.html"' 
    ) 
); 

if ((int)$link_stat[0]['like_count'] > 10) 
{ 
    //Get like by current user_id and link object_id 
    $like = $fb->api(
     array(
      'method' => 'fql.query', 
      'query' => 'SELECT user_id, object_id FROM like WHERE user_id=me() AND object_id IN (SELECT id FROM object_url WHERE url="http://myurl.com/item1.html")' 
     ) 
    ); 

    var_dump($like); 
} 

我在請求允許運行這段代碼* user_likes *和* read_stream *,但它輸出array(0) { }。 問題是,我怎麼知道當前用戶喜歡對應的鏈接?

回答

1

OH,SH ...我沒有注意到有一張桌子url_like(或最近出現?)。 我做了這個FQL查詢,並返回所需要的反應:

SELECT user_id FROM url_like WHERE user_id = me() AND url = "http://myurl.com/item1.html" 

Cpilko,非常感謝你! =)

0

你可以嘗試重寫你的查詢,以另一種方式去。看看你的網址是否存在於用戶喜歡的內容中。

這個工作對我來說:

SELECT url, id, type, site FROM object_url WHERE id IN (SELECT object_id FROM like 
     WHERE user_id=me()) AND strpos(url, "myurl.com/item1") >= 0 
+0

所以,有一個問題:我喜歡一些項目,但它們不出現在我的喜好列表中。所有鏈接都是外部和公開的。 – bibimij

+0

這總是一個問題。 FQL對返回的內容有限制,Facebook並不總是告訴你這些限制是什麼。你可以嘗試在你的內部查詢中加入LIMIT 99999,但是YMMV。您也可以嘗試通過Graph API方法而不是FQL來請求。再次YMMV。 – cpilko

+0

這些查詢的侷限性似乎是Facebook內的一項「功能」。他們似乎有意地將「類似」表返回給第三方應用程序的數據量專門用來阻止人們阻止類似按鈕後面的內容。 – cpilko

相關問題