API Facebook: obtenez des fans de / personnes qui aiment une page
je voudrais obtenir une liste des utilisateurs qui aiment une page ou d'un ventilateur.
la documentation de L'API FB indique que vous ne pouvez obtenir que le compte des fans d'une certaine page en utilisant le graphe social, mais pas la liste des fans.
une discussion ici rechercher des noms de fans Facebook suggère que l'on pourrait utiliser une requête FQL comme SELECT user_id FROM like WHERE object_id="YOUR PAGE ID"
pour obtenir le nombre de personnes qui ont aimé la page, mais pour la même page, il donne une réponse vide "{}".
donc je me demandais si quelqu'un avait une idée si cela pouvait être fait.
8 réponses
il y a un" moyen " d'obtenir une partie de la liste des fans avec leurs ID de profil d'une page de fans sans jeton.
-
Obtenir l'id d'une page publique de données de graphe: http://graph.facebook.com/cocacola - Coca-Cola a 40796308305.mise à jour 2016.04.30 : Facebook a maintenant besoin d'un token d'accès pour obtenir page_id à travers graph afin que vous puissiez analyser la syntaxe HTML de fanpage pour obtenir cet id sans aucune autorisation dehttps://www.facebook.com/{PAGENAME}
comme dans l'exemple ci-dessous basé sur les étiquettes og présentes sur la page de ventilateur. - Obtenir Coca-Cola", comme plugin" iframe afficher directement avec certains modifié params: http://www.facebook.com/plugins/fan.php?connections=100&id=40796308305
- maintenant, vérifiez les sources de la page, il ya beaucoup de fans avec des liens vers leurs profils, où vous pouvez trouver leurs ids de profil ou des surnoms comme: http://www.facebook.com/michal.semeniuk .
-
si vous n'êtes intéressé que par les ID de profil, utilisez à nouveau l'api graph-elle vous donnera l'id de profil directement: http://graph.facebook.com/michal.semeniukmise à jour 2016.04.30: Facebook a maintenant besoin d'un token d'accès pour obtenir ces informations. Vous pouvez analyser la syntaxe de profil HTML, tout comme dans la première étape meta tag est votre meilleur ami:<meta property="al:android:url" content="fb://profile/{PROFILE_ID}" />
et maintenant est la meilleure partie: essayer de rafraîchir (F5) le lien au point 2.. Il y a un nouveau jeu complet d'autres fans de Coca-Cola. Prenez seulement des uniques et vous pourrez obtenir une belle liste presque complète de fans.
-- mise à jour 2013.08.06 --
pourquoi ne pas utiliser mon script PHP prêt à l'emploi pour aller chercher des fans? :)
mise à jour 2016.04.30 : script D'exemple mis à jour pour utiliser de nouvelles méthodes Après Facebook a commencé pour exiger jeton d'accès pour obtenir des données publiques de l'api graphique.
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));
vous pouvez obtenir des fans en utilisant la nouvelle recherche facebook: https://www.facebook.com/search/321770180859/likers?ref=about
utilisez ceci.
https://www.facebook.com/browse/?type=page_fans&page_id=<your page id>
il retournera jusqu'à 500 des plus récents j'aime.
http://www.facebook.com/browse/?type=page_fans&page_id=<your page id>&start=400
chaque page vous donnera 100 fans. Changer la valeur de départ en (0, 100, 200, 300, 400) pour avoir les 500 premiers. Si start est >= 401, la page sera vide: (
selon la documentation Facebook il n'est pas possible d'obtenir tous les fans d'une page:
bien que vous ne pouvez pas obtenir une liste de tous les fans d'une Page Facebook, vous peut savoir si une personne en particulier a aimé une Page.
pour la réponse de S3m3n, le plugin de fans de Facebook (par exemple LAMODA ) a une limitation maintenant, vous obtenez de moins en moins de nouveaux fans sur les requêtes continues. Vous pouvez essayer mon script PHP modifié pour visualiser les résultats: https://gist.github.com/liruqi/7f425bd570fa8a7c73be#file-facebook_fans_by_plugin-php
une autre approche est la recherche de graphiques Facebook. Sur la page des résultats de la recherche: les gens qui aiment les pages nommées "Lamoda" , ouvrez la console Chrome et lancez JavaScript:
var run = 0;
var mails = {}
total = 3000; //滚动次数,可以自己根据情况定义
function getEmails (cont) {
var friendbutton=cont.getElementsByClassName("_ohe");
for(var i=0; i<friendbutton.length; i++) {
var link = friendbutton[i].getAttribute("href");
if(link && link.substr(0,25)=="https://www.facebook.com/") {
var parser = document.createElement('a');
parser.href = link;
if (parser.pathname) {
path = parser.pathname.substr(1);
if (path == "profile.php") {
search = parser.search.substr(1);
var args = search.split('&');
email = args[0].split('=')[1] + "@facebook.com\n";
} else {
email = parser.pathname.substr(1) + "@facebook.com\n";
}
if (mails[email] > 0) {
continue;
}
mails[email] = 1;
console.log(email);
}
}
}
}
function moreScroll() {
var text="";
containerID = "BrowseResultsContainer"
if (run > 0) {
containerID = "fbBrowseScrollingPagerContainer" + (run-1);
}
var cont = document.getElementById(containerID);
if (cont) {
run++;
var id = run - 2;
if (id >= 0) {
setTimeout(function() {
containerID = "fbBrowseScrollingPagerContainer" + (id);
var delcont = document.getElementById(containerID);
if (delcont) {
getEmails(delcont);
delcont.parentNode.removeChild(delcont);
}
window.scrollTo(0, document.body.scrollHeight - 10);
}, 1000);
}
} else {
console.log("# " + containerID);
}
if (run < total) {
window.scrollTo(0, document.body.scrollHeight + 10);
}
setTimeout(moreScroll, 2000);
}//1000为间隔时间,也可以根据情况定义
moreScroll();
il chargerait de nouveaux ventilateurs et imprimer le nom d'utilisateur/e-mail, Supprimer de vieux noeuds DOM pour éviter le crash de page. Vous pouvez trouver ce script ici
Cette page https://developers.facebook.com/docs/reference/fql/like/ , a écrit, vous ne pouvez pas obtenir la liste de fans.
"Le Post, la Vidéo, la Note, un Lien, une Photo de l'Album et les objets de l'API Graphique contenir l'équivalent de connexion appelé aime."
NOTE: fql comme requête est obsolète
techniquement, cette requête FQL devrait fonctionner, mais pour une raison quelconque, Facebook la rejette à cause d'un index manquant. Je ne sais pas si c'est à cause de la politique ou ils ont juste oublié.
SELECT uid FROM page_fans WHERE page_id="YOUR_PAGE_ID"
documentation FQL de Facebook ici vous dit comment faire. Exécuter l'exemple SELECT name, fan_count FROM page WHERE page_id = 19292868552
et de remplacer les page_id nombre avec votre page, le numéro d'identification et le nom de la page et le ventilateur comte.