0

안녕 일, 나는 다음과 같은 코드 조각이 : 나는에서 하나 개의 링크를 얻을페이스 북 FQL의 URL을 좋아하는 나는 주어진 URL을 기반으로 내 친구의 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이고 나는 카운터의 doesnt 증가 후에 그는 그것을 좋아하는 나의 친구에게 그것을 제공하지만 url은 두 번째 쿼리 목록에서 삭제됩니다!

여기에 무슨 문제가 있습니까?

+0

이 대답은 요구 사항을 얻는 방법을 설명합니다. http://stackoverflow.com/a/7828280/1085891 – JSuar

답변

0

는 구현하기 위해 노력하고 무엇 여러 문제가 있습니다

  1. 특정 상황에서 좋아하는의 사용자 ID를 얻는 방법에 대한 질문이 많이 있습니다. 짧은 대답은 - 너무 많은 시간을 보내고 해결책을 찾지 못한 경우 - 좋아하는 것을 쉽게 얻을 수 없거나 전혀 얻을 수 없다는 것입니다. 따라서 페이스 북은 특정 URL을 좋아하는 사용자 ID를 가질 수 없으며 간단한 해결책이나 가이드 북의 안내서를 찾지 못할 것입니다. similar issue reference

  2. 숫자를 생각해 봅시다. 너는 100 명의 친구가 있고, 그들 모두는 그들의 facebook 생활 동안에 적어도 100의 URL을 좋아했다. 이는 "query2"쿼리가 10,000 개의 URL 집합을 가져와야하며 fql 쿼리에는 실용적이지 않음을 의미합니다. stackoverflow와 페이스 북 블로그 게시물에 대해서도 많은 게시물이 있습니다. 이러한 쿼리는 테스트 한 특정 숫자로 제한해야합니다. 때로는 수천, 때로는 수백 개가 넘지 않을 수도 있습니다. 당신의 경우에는 수백을 사용할 것입니다. 그래서, 당신의 임무를 완수하는 한 가지 방법은 query2를 "LIMIT 0,100"으로 제한하는 것입니다. 시도해 보면 멀티 쿼리 작업을 볼 수 있습니다. 그 다음으로 할 일은 오프셋 매개 변수를 반복하여 나머지 결과에 "매김"하는 것입니다. 따라서 친구가 좋아하는 모든 URL을 얻으려면 100 개의 fql 요청을 만들어야합니다. 따라서 :

  3. 당신이하려는 것은 실시간으로 (하나의 쿼리) 수행 할 수 없습니다.

액세스 토큰을 사용하면 url_like 테이블을 쿼리하는 데 필요한 모든이라는 user_likes 및 friends_likes 권한이있는 경우.