Facebook FQL url喜欢的朋友工作很奇怪

时间:2014-01-30 14:55:05

标签: javascript facebook facebook-javascript-sdk facebook-fql fql.multiquery

您好,我想基于给定的网址计算好友的网址,我有以下代码:

    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);
        });
    }

我从第二个查询得到一个链接,这是一个网址,我把它交给我的一个朋友,因为他没有增加计数器,但是从第二个查询列表中删除了网址!

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您尝试实施的内容存在多个问题:

  1. 在某些情况下,如何获取喜欢的用户ID有很多问题。简短的回答是 - 如果你花了太多时间而没有找到解决方案 - 你不能轻易获得这些喜欢,或根本无法获得它们。因此,Facebook不会让您拥有喜欢特定网址的用户ID,而且您将找不到简单的解决方案或Facebook的指导文档。 similar issue reference

  2. 让我们想想数字。如果你有100个朋友,他们在Facebook生活中都喜欢至少100个网址。这意味着您的“query2”查询应该是10,000个URL的结果集,这对于fql查询是不实际的。在stackoverflow上甚至在facebook博客帖子上有很多关于它的帖子。您必须将此类查询限制为您已测试的特定数字。有时它可能是数千,有时不超过几百。在你的情况下,我会使用数百。因此,完成任务的一种方法是使用“LIMIT 0,100”限制query2 - 尝试它,你会看到multyquery工作。接下来要做的是通过循环offset参数对其余结果进行“分页”。因此,您必须制作100个fql请求才能获得您朋友喜欢的所有网址。因此:

  3. 您尝试做的事情无法实时完成(一次查询)。

  4. 如果您的访问令牌具有user_likes和friends_likes权限,则只需查询url_like表。