Facebook API:获取喜欢页面的人/粉丝

pes*_*sho 68 facebook facebook-page facebook-like facebook-graph-api facebook-fan-page

我想获得一个喜欢某个页面或粉丝的用户列表.

FB API文档声明您只能使用社交图获得某个页面的粉丝数,但不能获得粉丝列表.

这里的讨论检索Facebook粉丝名称表明可以使用FQL查询SELECT user_id FROM like WHERE object_id="YOUR PAGE ID"来获得喜欢该页面的人数,但对于同一页面,它会给出一个空响应"{}".

所以我想知道是否有人知道这是否可以做到.

s3m*_*m3n 71

有一种"方法"可以获得一些粉丝列表的一部分,其中包含一些粉丝页面的简介ID,而无需令牌.

  1. 获取带有公共图表数据的粉丝的ID:http://graph.facebook.com/cocacola - 可口可乐有40796308305. 更新2016.04.30:Facebook现在需要访问令牌才能通过图表获取page_id,这样您就可以解析粉丝页HTML语法https://www.facebook.com/{PAGENAME}根据粉丝页面上显示的og标签,在未经任何授权的情况下获取此ID,如下例所示.
  2. 直接与一些修改PARAMS获得可口可乐公司的"像插件" IFRAME显示:http://www.facebook.com/plugins/fan.php?connections=100&id=40796308305
  3. 现在查看页面来源,有很多粉丝都有链接到他们的个人资料,在那里你可以找到他们的个人资料ID或昵称,如:http://www.facebook.com/michal.semeniuk.
  4. 如果您只对个人资料ID感兴趣,请再次使用图表api - 它会直接为您提供个人资料ID:http://graph.facebook.com/michal.semeniuk更新2016.04.30:Facebook现在需要访问令牌来获取此类信息.您可以解析配置文件HTML语法,就像在第一步中元标记是您最好的朋友: <meta property="al:android:url" content="fb://profile/{PROFILE_ID}" />

现在是最好的部分:尝试刷新(F5)第2点的链接.还有一套全新的可口可乐粉丝.只采取独一无二的,您将能够获得一些不错的,几乎完整的粉丝列表.

- 更新2013.08.06 -

你为什么不用我现成的PHP脚本来获取一些粉丝?:)

更新2016.04.30:在Facebook开始要求访问令牌从图api获取公共数据后,更新了示例脚本以使用新方法.

function fetch_fb_fans($fanpage_name, $no_of_retries = 10, $pause = 500000 /* 500ms */){
    $ret = array();
    // prepare real like user agent and accept headers
    $context = stream_context_create(array('http' => array('header' => 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/49.0.2623.108 Chrome/49.0.2623.108 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nAccept-encoding: gzip, deflate, sdch\r\nAccept-language: en-US,en;q=0.8,pl;q=0.6\r\n')));
    // get page id from facebook html og tags for mobile apps
    $fanpage_html = file_get_contents('https://www.facebook.com/' . $fanpage_name, false, $context);
    if(!preg_match('{fb://page/(\d+)}', $fanpage_html, $id_matches)){
        // invalid fanpage name
        return $ret;
    }
    $url = 'http://www.facebook.com/plugins/fan.php?connections=100&id=' . $id_matches[1];
    for($a = 0; $a < $no_of_retries; $a++){
        $like_html = file_get_contents($url, false, $context);
        preg_match_all('{href="https?://www\.facebook\.com/([a-zA-Z0-9\._-]+)" class="link" data-jsid="anchor" target="_blank"}', $like_html, $matches);
        if(empty($matches[1])){
            // failed to fetch any fans - convert returning array, cause it might be not empty
            return array_keys($ret);
        }else{
            // merge profiles as array keys so they will stay unique
            $ret = array_merge($ret, array_flip($matches[1]));
        }
        // don't get banned as flooder
        usleep($pause);
    }
    return array_keys($ret);
}

print_r(fetch_fb_fans('TigerPolska', 2, 400000));
Run Code Online (Sandbox Code Playgroud)

  • 如何通过Graph api或fql获取它?我想我们无法获得喜欢该页面的个人资料名称. (2认同)

Ole*_*leg 41

你可以使用新的Facebook搜索获得粉丝:https://www.facebook.com/search/321770180859/likers?ref = about

  • @verbumSapienti这个答案在2015年6月完全有效 (2认同)

Som*_*luk 10

用这个.

https://www.facebook.com/browse/?type=page_fans&page_id=<your page id>
Run Code Online (Sandbox Code Playgroud)

它将返回最多500个最近的喜欢.

http://www.facebook.com/browse/?type=page_fans&page_id=<your page id>&start=400
Run Code Online (Sandbox Code Playgroud)

每个页面将为您提供100个粉丝.将起始值更改为(0,100,200,300,400)以获得前500.如果start> = 401,则页面将为空白:(

  • Max现在是10,000. (2认同)

小智 7

根据Facebook文档,它不可能获得页面的所有粉丝:

虽然您无法获得Facebook页面所有粉丝的列表,但您可以了解特定的人是否喜欢某个页面.


Mur*_*man 1

此页面https://developers.facebook.com/docs/reference/fql/like/写道,你无法获取粉丝列表。

“帖子、视频、注释、链接、照片和相册图 API 对象包含一个称为“点赞”的等效连接。”

注意:类似 fql 的查询已被弃用