0

您好我想計算的基於給定的URL我的朋友的URL喜歡,我有如下一段代碼:的朋友Facebook的FQL網址喜歡的工作奇怪

function mQ(url){ 

     FB.api({ 
      access_token:'CAACEdEose0cBABMG67fV8Yn5cHo5fkb6kT6npRWO7YQL8zagoFLrz5OFLFIEPVUJhMwf9rql9oAqktDUJMKBGr5NNRXJ73jf418gspbfklvdJs6Kx1EkCRutYhSnSW4Binb4F9AlOUIHfXZC052SOdlgtxTSng6gM4CAZAstpLAoOd1p5pnCpNadnlluMqOxjHo1jx1QZDZD', 
      method: 'fql.multiquery', 
      queries: { 
       "query1":"SELECT total_count, like_count, click_count, normalized_url FROM link_stat WHERE url='"+url+"'", 
       "query2":"SELECT url FROM url_like WHERE user_id IN (SELECT uid1 FROM friend WHERE uid2 = me())" 
      } 
     }, function(response) { 
      console.log(response) 
      var urlLikes = 0; 
      var total = response[0].fql_result_set[0].total_count; 
      var likes = response[0].fql_result_set[0].like_count; 
      var clicks = response[0].fql_result_set[0].click_count; 
      var normalized_url = response[0].fql_result_set[0].normalized_url; 
      var results = response[1].fql_result_set 
      console.log('Total: ' +total+ ', Likes: ' + likes+ ', Clicks: ' +clicks) 
      console.log('Urls: ' + results.length) 
      console.log('=========================================================================') 
      console.log('Checking for url: ' + url); 
      console.log('=========================================================================') 

      for(var i = 0; i < results.length; i++){ 

       var newUrl = decodeURI(url).toLowerCase(); 
       var newFriendUrl = decodeURI(results[i].url).toLowerCase(); 

       if (newUrl == newFriendUrl) { 
        urlLikes += 1; 
       } 

      } 

      console.log('Url likes: ' + urlLikes); 
     }); 
    } 

我從一個鏈接第二個查詢是一個URL,我把它給了我的一個朋友,以便在他的計數器沒有增加之後就喜歡它,而是從第二個查詢列表中刪除了URL!

我在這裏做錯了什麼?

+0

我認爲這個答案解釋瞭如何獲得您的要求:http://stackoverflow.com/a/7828280/1085891 – JSuar

回答

0

有多個問題與你想實現的東西:

  1. 有很多有關如何獲得喜歡的用戶ID在某些情況下的問題。簡短的回答是 - 如果你花費了太多時間並沒有找到解決方案 - 你不能輕易得到這些喜歡的東西,或者根本無法獲得它們。所以,facebook不會讓你擁有喜歡某個特定網址的用戶標識符,並且你不會找到來自Facebook的簡單解決方案或指導文檔。 similar issue reference

  2. 讓我們認爲數字。如果你有100個朋友,並且他們所有人在Facebook的生活中至少喜歡100個網址。這意味着你的「query2」查詢應該導致10,000個url的設置,這對於fql查詢來說是不實際的。有很多關於它在stackoverflow上的帖子,甚至在Facebook的博客文章。您必須將這些查詢限制在您測試的某個數字上。有時它可能是數千,有時不超過幾百。在你的情況下,我會使用數百個。因此,完成任務的一種方法是將query2限制爲「LIMIT 0,100」 - 嘗試一下,你會看到multyquery的工作。接下來要做的是通過循環偏移參數來「分頁」結果的其餘部分。所以,你必須做出100個fql請求才能獲得你的朋友喜歡的所有網址。因此:

  3. 你試圖做的事是不可能實時完成的(一個查詢)。

如果您的訪問令牌具有user_likes和friends_likes權限,那麼您只需查詢url_like表即可。

相關問題