トークンなしでファンページのプロファイル ID を持つファンリストの一部を取得する「方法」があります。
公開グラフ データを使用してファンページの ID を取得します: http://graph.facebook.com/cocacola - Coca-Cola には 40796308305 があります。2016.04.30 の 更新: Facebook では、グラフを介して page_id を取得するためにアクセス トークンが必要になり、ファンページの HTML 構文を解析できるようになりました。https://www.facebook.com/{PAGENAME}
以下の例のように、ファンページに存在する og タグに基づいて、許可なしでこの ID を取得します。
- Coca-Cola の「プラグインのような」iframe 表示を、いくつかの変更されたパラメータで直接取得します: http://www.facebook.com/plugins/fan.php?connections=100&id=40796308305
- ページのソースを確認してください。多くのファンがプロフィールへのリンクを持っており、プロフィール ID やニックネームをhttp://www.facebook.com/michal.semeniukのように見つけることができます。
プロファイル ID のみに関心がある場合は、再度グラフ API を使用します。プロファイル ID が直接提供されます。プロファイルの HTML 構文を解析できます。これは、最初のステップのメタ タグが親友であるようにです。
<meta property="al:android:url" content="fb://profile/{PROFILE_ID}" />
そして今が最高の部分です: ポイント 2 のリンクを更新 (F5) してみてください.. コカ・コーラの別のファンの新しいフルセットがあります。ユニークなものだけを取得すると、ファンのほぼ完全なリストを取得できます。
-- 2013.08.06 更新 --
私の準備が整った PHP スクリプトを使用して、ファンを獲得してみませんか? :)
UPDATE 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));