我正试图获得一个关注Facebook页面的随机喜欢者的"列表"。我用这个代码来获得一些粉丝(不是随机的粉丝,但这是另一回事)。
<?php
function fetch_fb_fans($fanpage_name, $no_of_retries = 10, $pause = 500000){
$ret = array();
/* get page info from graph */
$fanpage_data = json_decode(file_get_contents('http://graph.facebook.com/' . $fanpage_name), true);
if(empty($fanpage_data['id'])){
/* invalid fanpage name */
return $ret;
}
$matches = array();
$url = 'http://www.facebook.com/plugins/fan.php?connections=100&id=' . $fanpage_data['id'];
$context = stream_context_create(array('http' => array('header' => 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0')));
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._-]+)" 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('cocacola', 2, 400000));
prints 73 unique fan names as array
*/
$contador = 0;
foreach (fetch_fb_fans('cocacola', 2, 400000) as $fan) {
$pageContent = file_get_contents('http://graph.facebook.com/'.$fan.'');
$parsedJson = json_decode($pageContent);
echo $parsedJson->username ."<br/>";
}
?>
代码来自:Facebook API:获得/喜欢页面的人的粉丝
这段代码给了我一些用户名。现在,我的问题是,在搜索了谷歌之后。。。是的,我能得到每个用户关注的页数吗?
我知道Graph API让我知道我的点赞,但当我试图看到其他用户的点赞时,它会向我抛出OAuthException错误。我怀疑我做得不对。因此,我将对如何做到这一点进行一些解释。我搜索了谷歌,但不明白它是怎么工作的。
谢谢。
不幸的是,Facebook文档不是很清楚:https://developers.facebook.com/docs/graph-api/reference/v2.2/user
然而,从用户那里获得点赞需要:
- 用户的用户访问令牌
- 访问令牌上授予的"用户点赞权限",这是Facebook在您的应用程序上批准的特殊权限
如果没有用户的访问令牌,您就无法看到他们喜欢的页面。
虽然不支持,但如果他们公开了这些信息,您可以使用页面抓取器来查找这些信息。
根据你的问题,目前尚不清楚用户是否登录了你的应用程序,或者你只是想从自己的一个页面或另一个页面获取信息。如果你没有用户登录你的应用程序,恐怕除了页面抓取器之外,根本没有办法获得这些信息。