在Facebook graph API中,如何找到您的所有朋友都喜欢某本书或某部电影

在Facebook graph API中,如何找到您的所有朋友都喜欢某本书或某部电影,facebook,facebook-graph-api,facebook-fql,Facebook,Facebook Graph Api,Facebook Fql,我正试图找出我的朋友中有多少人喜欢某个实体 例如,对于一本给定的书或电影,我如何查找有多少朋友已经喜欢同一本书或电影 我相信当我们显示fb:like按钮社交插件时,信息确实会出现,但我想得到这个数字,这样我就可以通过编程方式显示朋友中最受欢迎的书籍,等等,按降序排列 我的后端是php,但我也使用Javascript SDK。 感谢您事先的输入这些“对象”实际上是页面,因此要检索您的朋友列表,如电影或书籍(页面),请使用以下查询: SELECT uid FROM page_fan WHERE pa

我正试图找出我的朋友中有多少人喜欢某个实体

例如,对于一本给定的书或电影,我如何查找有多少朋友已经喜欢同一本书或电影

我相信当我们显示fb:like按钮社交插件时,信息确实会出现,但我想得到这个数字,这样我就可以通过编程方式显示朋友中最受欢迎的书籍,等等,按降序排列

我的后端是php,但我也使用Javascript SDK。 感谢您事先的输入

这些“对象”实际上是页面,因此要检索您的朋友列表,如电影或书籍(页面),请使用以下查询:

SELECT uid FROM page_fan WHERE page_id = 91290503700 AND uid IN (SELECT uid2 FROM friend WHERE uid1=me())
在的控制台中尝试此操作,它将检索所有喜欢《盗梦空间》电影的朋友ID

编辑:
检索朋友喜欢的电影(例如)的明显方法是:

SELECT page_id,uid 
FROM page_fan 
WHERE type="MOVIE" 
AND uid IN (
    SELECT uid2 
    FROM friend 
    WHERE uid1=me()
)
但是我注意到,如果集合很大,它不会返回所有用户(这很可能是每个用户的情况)…所以我做了一个hack只是为了让您开始

function sectionArray($array, $step) {
    $sectioned = array();

    $k = 0;
    for ( $i=0;$i < count($array); $i++ ) {
        if ( !($i % $step) ) {
            $k++;
        }
        $sectioned[$k][] = $array[$i];
    }
    return $sectioned;
}

$result = $facebook->api(array(
    "method"    => "fql.query",
    "query"     => "SELECT page_id FROM page_fan WHERE type='MOVIE' AND uid IN (SELECT uid2 FROM friend WHERE uid1=me())"
));
$pages = array();

foreach($result as $k=>$v) {
    $pages[] = $v["page_id"];
}

$pages = array_unique($pages);
$pages = array_values($pages);
$sets = sectionArray($pages,10);

$movies = array();
foreach($sets as $set) {
    $page_set = implode(',',$set);
    $friends = $facebook->api(array(
        "method"    => "fql.query",
        "query"     => "SELECT page_id,uid FROM page_fan WHERE page_id IN ($page_set) AND uid IN (SELECT uid2 FROM friend WHERE uid1=me())"
    ));
    $movies[] = $friends;
}

$final = array();
foreach($movies as $v)
    foreach($v as $k=>$arr)
        $final[$arr["page_id"]][] = $arr["uid"];
print_r($final);
从这里,你可以查看最受欢迎的……等等


注:正如我刚才所说,这只是为了让您开始,我想您可以缓存一些查询并提高性能。

谢谢您的帮助。我想尝试的是——比如说对于给定类别的“电影”-是否可以仅根据我朋友的喜好数量来显示前10名流行电影-因此我没有电影ID-应该根据类别来显示,对于给定类别,根据我朋友的喜好数量来显示前10名流行歌曲、电影或书籍。谢谢much@Gublooo当前位置您的问题很清楚:“对于给定的书或电影”,这就是为什么我用上面的“喜欢”来回答。我将更新我的答案,以获得一个快速(不高效)的解决方案。非常感谢-我不可能要求更好的解决方案-非常感谢您花时间帮助我。再次感谢
Array
(
    [movie_id] => Array
        (
            [0] => friend_id
            [1] => friend_id
            [2] => friend_id
            [3] => friend_id
        )

    [movie_id] => Array
        (
            [0] => friend_id
            [1] => friend_id
            [2] => friend_id
            [3] => friend_id
            [4] => friend_id
            [5] => friend_id
            [6] => friend_id
            [7] => friend_id
        )

    [movie_id] => Array
        (
            [0] => friend_id
        )

    [movie_id] => Array
        (
            [0] => friend_id
        )
)