Facebook API: Holen Sie sich Fans von / Menschen, die eine Seite mögen

70

Ich möchte eine Liste von Benutzern erhalten, denen eine bestimmte Seite oder ein Fan davon gefällt.

In der FB-API-Dokumentation heißt es, dass Sie nur die Anzahl der Fans einer bestimmten Seite mithilfe des sozialen Diagramms ermitteln können, nicht jedoch eine Liste der Fans.

Eine Diskussion hier Abrufen von Facebook-Fan-Namen legt nahe, dass man eine FQL-Abfrage verwenden könnte SELECT user_id FROM like WHERE object_id="YOUR PAGE ID", um die Anzahl der Personen zu ermitteln, denen die Seite gefallen hat, aber für dieselbe Seite wird eine leere Antwort "{}" angezeigt.

Also habe ich mich gefragt, ob jemand eine Idee hat, ob dies möglich ist.

Pesho
quelle
Sie können nur die Fans von Seiten erhalten, für die Sie Administrator sind. Sie müssen also ein Zugriffstoken für Ihre Anfrage bereitstellen, das einem Administratorkonto der Seite zugeordnet ist, auf der Sie die Fans erreichen möchten.
Nathan Totten
Aha. Das macht Sinn. Danke für die Antwort!
Pesho
3
Wie? 2 Jahre später sehe ich immer noch keinen Weg?
Dmitry B.
Ich habe dies nur gestimmt, um Ihnen die 69. Stimme zu geben: D

Antworten:

70

Es gibt eine "Möglichkeit", einen Teil der Fanliste mit ihren Profil-IDs einer Fanpage ohne Token zu erhalten.

  1. ID einer Fanpage mit öffentlichen Diagrammdaten abrufen : http://graph.facebook.com/cocacola - Coca-Cola hat 40796308305. UPDATE 2016.04.30 : Facebook benötigt jetzt ein Zugriffstoken, um page_id über das Diagramm abzurufen, damit Sie die HTML-Syntax der Fanpage analysieren können um diese ID ohne Autorisierung von https://www.facebook.com/{PAGENAME}wie im folgenden Beispiel basierend auf den auf der Fanpage vorhandenen og-Tags zu erhalten.
  2. Holen Sie sich Coca-Colas "like plugin" iframe-Anzeige direkt mit einigen geänderten Parametern: http://www.facebook.com/plugins/fan.php?connections=100&id=40796308305
  3. Überprüfen Sie nun die Seitenquellen, es gibt viele Fans mit Links zu ihren Profilen, wo Sie ihre Profil-IDs oder Spitznamen finden können wie: http://www.facebook.com/michal.semeniuk .
  4. Wenn Sie nur an Profil-IDs interessiert sind, verwenden Sie die Grafik-API erneut. Sie erhalten die Profil-ID direkt: http://graph.facebook.com/michal.semeniuk UPDATE 2016.04.30: Facebook benötigt jetzt ein Zugriffstoken, um solche Informationen zu erhalten. Sie können die HTML-Syntax des Profils analysieren, genau wie im ersten Schritt ist das Meta-Tag Ihr bester Freund: <meta property="al:android:url" content="fb://profile/{PROFILE_ID}" />

Und jetzt ist das Beste daran: Versuchen Sie, den Link in Punkt 2 zu aktualisieren (F5). Es gibt einen neuen vollständigen Satz weiterer Fans von Coca-Cola. Nehmen Sie nur Unikate und Sie werden in der Lage sein, eine nette, fast vollständige Liste der Fans zu bekommen.

- UPDATE 2013.08.06 -

Warum benutzt du nicht mein fertiges PHP-Skript, um ein paar Fans zu holen? :) :)

UPDATE 2016.04.30 : Das Beispielskript wurde aktualisiert, um neue Methoden zu verwenden, nachdem Facebook Zugriffstoken benötigt, um öffentliche Daten von der Grafik-API abzurufen.

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));
s3m3n
quelle
2
Wie komme ich über Graph api oder fql? Ich denke, es gibt keine Möglichkeit, einen Profilnamen zu erhalten, dem die Seite gefallen hat.
Sanket
Wo haben Sie davon erfahren, wie Plugin?
James P.
1
@ JamesPoulson es ist offizielles FB-ähnliches Plugin zum Einbetten in externe Webseiten, es gibt sogar einen Generator: developer.facebook.com/docs/reference/plugins/like-box
s3m3n
facebook.com/plugins/fan.php?connections=100&id=40796308305 Ich denke, sie setzen das Limit auf 100, anstatt 10000 Benutzer gleichzeitig zu
erfassen
Warum probierst du nicht mein fertiges PHP-Skript zum Abrufen von FB-Fans ohne Autorisierung aus?
s3m3n
41

Sie können Fans mit der neuen Facebook-Suche erreichen: https://www.facebook.com/search/321770180859/likers?ref=about

Oleg
quelle
Könnten Sie bitte einige Details angeben?
Oleg
2
@verbumSapienti Diese Antwort ist ab dem 15. Juni vollständig gültig
Maxim Mazurok
@jirungaray Ja. Sie sollten "3217701 ..." von der ursprünglichen URL als Antwort auf Ihre Seiten-ID ersetzen, die Sie hier finden: findmyfacebookid.com. Diese Funktion fehlt möglicherweise auch in der mobilen Version. Probieren Sie sie daher von einem Desktop aus.
Maxim Mazurok
Können wir das in einen iFrame einbetten?
Cyber8200
1
Funktioniert immer noch bei 2016. Stellen Sie einfach sicher, dass Sie angemeldet und mit der zugehörigen FB-Seite (z. B. Admin, Editor, Advertiser) verbunden sind
Carmela
10

Benutze das.

https://www.facebook.com/browse/?type=page_fans&page_id=<your page id>

Es werden bis zu 500 der neuesten Likes zurückgegeben.

http://www.facebook.com/browse/?type=page_fans&page_id=<your page id>&start=400

Jede Seite gibt Ihnen 100 Fans. Ändern Sie den Startwert in (0, 100, 200, 300, 400), um die ersten 500 zu erhalten. Wenn start> = 401 ist, ist die Seite leer :(

Somnath Muluk
quelle
Können wir das in einen iFrame einbetten?
Cyber8200
2
Max ist jetzt 10.000.
Noah
nicht mehr arbeiten? Ich denke, Sie müssen die Seite besitzen
Anoyz
Ich weiß nicht, ob es einen anderen Weg gibt, um Ihre Seiten-ID zu erhalten, aber ich habe diese Seite dafür gefunden: findmyfbid.com
Omid Ariyan
7

Laut der Facebook-Dokumentation ist es nicht möglich, alle Fans einer Seite zu erreichen:

Obwohl Sie nicht alle Fans einer Facebook-Seite auflisten können, können Sie herausfinden, ob einer bestimmten Person eine Seite gefallen hat.

Steven Delrue
quelle
3

Für die Antwort von s3m3n ist das Facebook-Fans-Plugin (z. B. LAMODA ) jetzt eingeschränkt. Bei kontinuierlichen Anfragen erhalten Sie immer weniger neue Fans. Sie können mein modifiziertes PHP-Skript ausprobieren, um die Ergebnisse zu visualisieren: https://gist.github.com/liruqi/7f425bd570fa8a7c73be#file-facebook_fans_by_plugin-php

Ein weiterer Ansatz ist die Facebook-Diagrammsuche. Auf der Suchergebnisseite: Personen, die Seiten mit dem Namen "Lamoda" mögen , öffnen die Chrome-Konsole und führen JavaScript aus:

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();

Es würde neue Fans laden und Benutzer-ID / E-Mail drucken, alte DOM-Knoten entfernen, um einen Seitenabsturz zu vermeiden. Sie finden dieses Skript hier

liruqi
quelle
1

Diese Seite https://developers.facebook.com/docs/reference/fql/like/ schrieb, Sie können keine Fanliste bekommen.

"Die API-Objekte für Post-, Video-, Notiz-, Link-, Foto- und Albumdiagramme enthalten eine entsprechende Verbindung mit dem Namen" Gefällt mir "."

HINWEIS : Eine fql-ähnliche Abfrage ist veraltet

Murat Kucukosman
quelle
1
Seite wird nicht gefunden
Bevor
@Bevor vor 5 Jahren war es da. Aber jetzt Facebook Like Query veraltet
Murat Kucukosman
0

Technisch sollte diese FQL-Abfrage funktionieren, aber aus irgendeinem Grund lässt Facebook sie aufgrund eines fehlenden Index nicht zu. Ich bin mir nicht sicher, ob das an der Politik liegt oder ob sie es einfach vergessen haben.

SELECT uid FROM page_fans WHERE page_id="YOUR_PAGE_ID"
Robin Smidsrød
quelle
0

Ich habe ein kleines Tool lusterzum Herunterladen einer Liste mit "Likes" und "Followern" Ihrer Facebook-Seite erstellt.

Nach dem Herunterladen und Entpacken des Archivs für Ihre Plattform können Sie es vom Terminal als ausführen

luster fans my-page-name

Wo my-page-nameist die Zeichenfolge Ihrer Facebook-Seite?

Sie werden nach E-Mail und Passwort für Ihr Facebook-Konto gefragt. Beachten Sie, dass für dieses Konto eine der verfügbaren Seitenrollen erforderlich ist . Auch Analyst ist genug.

Nach einer Weile sollten Sie eine Ausgabe ähnlich der folgenden erhalten

TIME,KIND,ID,NAME,LINK
1581665652,Like,111111111,John Doe,https://www.facebook.com/111111111
1581663355,Like,222222222,Kal Peterson,https://www.facebook.com/222222222
1581661970,Follow,333333333,Nikol Kus,https://www.facebook.com/333333333

Dieses Tool basiert auf einer Lesetabelle, die Sie im Settings -> People and Other PagesAbschnitt Ihrer Facebook-Seite finden.

Beachten Sie, dass es auf Facebook-Seite ein Limit von bis zu 7.000 Ergebnissen gibt . Ich habe es auf zwei Seiten mit mehr als 20.000 Fans getestet und nicht mehr als 7.000 Ergebnisse erzielt.

Weitere Informationen finden Sie unter https://github.com/zladovan/luster .

Ján Čabala
quelle
-5

Facebook FQL Dokumentation hier erfahren Sie , wie es zu tun. Führen Sie das Beispiel aus SELECT name, fan_count FROM page WHERE page_id = 19292868552und ersetzen Sie die page_id-Nummer durch die ID-Nummer Ihrer Seite. Der Seitenname und die Anzahl der Fans werden zurückgegeben.

Colin Wren
quelle
1
Er fragt, wie man die Liste der Benutzer erhält, denen eine Seite gefallen hat.
Wes Gamble