0

Привет Я хотел бы считать URL-адрес любит моих друзей, основанных на данном URL, у меня есть следующий фрагмент кода:Facebook FQL URL любит друзей работают странно

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. Есть много вопросов о том, как получить пользовательские идентификаторы подобных в определенных обстоятельствах. Короткий ответ: если вы потратили слишком много времени и не нашли решения, вы не можете легко получить эти симпатии или не сможете получить их вообще. Таким образом, facebook не позволит вам иметь идентификаторы пользователей, которым нравятся определенные URL-адреса, и вы не найдете простого решения или управляемой документации из facebook. similar issue reference

  2. Давайте рассмотрим цифры. Если у вас есть 100 друзей, и всем им понравилось не менее 100 URL-адресов во время их жизни в facebook. Это означает, что ваш запрос «query2» должен содержать набор из 10 000 URL-адресов, и это не подходит для запроса fql. Есть много сообщений об этом в stackoverflow и даже на сообщениях в блоге facebook. Вы должны ограничить такие запросы определенным количеством, которое вы проверили. Иногда это могут быть тысячи, а иногда и не более нескольких сотен. В вашем случае я бы использовал сотни. Итак, один из способов выполнить вашу задачу - ограничить запрос2 «LIMIT 0,100» - попробуйте, и вы увидите, что многозадачная работа. Следующее, что нужно сделать, это «paginate» над остальными результатами путем циклического смещения параметра. Таким образом, вам нужно будет сделать 100 запросов fql, чтобы получить все URL-адреса, которые понравились вашим друзьям. Таким образом:

  3. То, что вы пытаетесь сделать, невозможно выполнить в реальном времени (один запрос).

Если маркер доступа имеет user_likes и friends_likes разрешения, все, что вам нужно запросить url_like таблицу.

Смежные вопросы