Facebook-API – Wie erhalte ich das Profilbild eines Facebook-Benutzers über die Facebook-API (ohne dass der Benutzer die Anwendung „zulassen“ muss)

Lesezeit: 9 Minuten

Facebook API – Wie erhalte ich das Profilbild eines Facebook Benutzers uber
Johannes Himmelmann

Ich arbeite an einem CMS das das Profilbild eines Benutzers von seinem Facebook abruft URL (das ist, http://facebook.com/users_unique_url). Wie kann ich das erreichen? Gibt es einen Facebook-API-Aufruf, der die Profilbild-URL eines Benutzers abruft, ohne dass der Benutzer dies tun muss? Erlauben die Anwendung?

Facebook API – Wie erhalte ich das Profilbild eines Facebook Benutzers uber
Sarfraz

Holen Sie sich einfach die Daten über diese URL:

http://graph.facebook.com/userid_here/picture

Ersetzen userid_here mit der ID des Benutzers, von dem Sie das Foto erhalten möchten. Sie können auch HTTPS verwenden.

Sie können die PHPs verwenden file_get_contents Funktion, um diese URL zu lesen und die abgerufenen Daten zu verarbeiten.

Ressource:

http://developers.facebook.com/docs/api

Notiz: Im php.inimüssen Sie sicherstellen, dass die OpenSSL Erweiterung aktiviert ist, um die zu verwendenfile_get_contents Funktion von PHP, um diese URL zu lesen.

  • Wenn Sie diese Seite weiter durchsehen, könnte eine weitere nützliche Sache die sein ?type=large Abfragezeichenfolge, die Sie hinzufügen können. Requisiten für eine viel bessere Antwort als das Screen-Scraping, das ich gerade eingegeben habe, übrigens :).

    – Domenik

    12. Mai 2010 um 17:21 Uhr


  • Verwenden <img src="//graph.facebook.com/sarfraz.anees/picture" /> Wenn Sie zwischen HTTP und HTTPS wechseln, wird das Protokoll vom Browser erkannt, und Sie erhalten keine Warnungen zu gemischten Inhalten bei HTTPS.

    – Chris Jakob

    23. November 2011 um 1:45 Uhr

  • Es sollte betont werden, dass einige Benutzer dies tun NICHT einen Benutzernamen für ihr FB-Konto festgelegt haben. Wenn dies der Fall ist und Sie versuchen, diese Antwort umzusetzen, erhalten Sie das Standardprofilbild von FB, das Fragezeichen. Um dieses Problem einfach zu vermeiden, verwenden Sie stattdessen die FB-ID des Benutzers.

    – Josch

    14. Februar 2012 um 20:01 Uhr


  • Zu beachten ist, dass dies in V2 der Graph-API nicht mehr mit einem Benutzernamen funktioniert. Jetzt brauchen Sie also zuerst die Benutzer-ID, und Sie können keinen Benutzernamen mehr verwenden, um diese zu erhalten. Die Benutzer-IDs ändern sich auch pro App, sodass Sie über eine Art ordnungsgemäße Authentifizierung verfügen müssen, um eine Benutzer-ID abzurufen, die Sie verwenden können. Technisch gesehen ist das Profilbild immer noch öffentlich und verfügbar unter graph.facebook.com/v2.2/4/picture?redirect=0 Es scheint jedoch unmöglich, die Benutzer-ID (4 im vorherigen Link) nur anhand des Benutzerprofils herauszufinden. Die alte Grafik-URL funktioniert noch bis April 2015.

    – skd

    10. November 2014 um 8:43 Uhr

  • Es ist 2015 und ich bekomme (#803) Benutzer können nicht nach ihrem Benutzernamen abgefragt werden (sarfraz.anees)

    – Santosh Kumar

    19. Juni 2015 um 13:35 Uhr

1646243651 126 Facebook API – Wie erhalte ich das Profilbild eines Facebook Benutzers uber
Neiker

Zeigen:

50×50 Pixel

<img src="https://graph.facebook.com/{{fid}}/picture">

200 Pixel Breite

<img src="https://graph.facebook.com/{{fid}}/picture?type=large">

Speichern (mit PHP)

HINWEIS: Verwenden Sie dies nicht. Siehe den Kommentar von @Foreever unten.

$img = file_get_contents('https://graph.facebook.com/'.$fid.'/picture?type=large');
$file = dirname(__file__).'/avatar/'.$fid.'.jpg';
file_put_contents($file, $img);

Wobei $fid Ihre Benutzer-ID auf Facebook ist.

HINWEIS: Bei Bildern, die als „18+“ gekennzeichnet sind, benötigen Sie ein gültiges access_token von einem 18+-Benutzer:

<img src="https://graph.facebook.com/{{fid}}/picture?access_token={{access_token}}">

UPDATE 2015:

Graph API v2.0 kann nicht mit Benutzernamen abgefragt werden, Sie sollte verwenden userId immer.

  • Hier sind weitere Informationen zum Typparameter: „Sie können die gewünschte Bildgröße mit dem Typargument angeben, das quadratisch (50 x 50), klein (50 Pixel breit, variable Höhe), normal (100 Pixel breit, variable Höhe) sein sollte ) und groß (ca. 200 Pixel breit, variable Höhe)” Via Graph-API auf Facebook

    Benutzer603284

    10. Juni 2011 um 20:37 Uhr


  • Um diese Methode zu verwenden, müssen Sie allow_url_fopen auf on setzen. Die Allow_url_fopen-Direktive ist standardmäßig deaktiviert. Sie sollten sich der Auswirkungen auf die Sicherheit bewusst sein, wenn Sie die Allow_url_fopen-Direktive aktivieren. PHP-Skripte, die auf entfernte Dateien zugreifen können, sind potenziell anfällig für willkürliche Code-Injektionen. Wenn die Allow_url_fopen-Direktive aktiviert ist, können Sie Skripte schreiben, die entfernte Dateien öffnen, als wären sie lokale Dateien.

    – Für immer

    12. August 2014 um 10:24 Uhr

  • Sieht nützlich aus, also Prost im Voraus, aber da ich ein Level zu neu bin, um es zu verstehen, würde ich gerne wissen, in welcher Programmiersprache das ist? Meine Vermutung ist PHP.

    – hallo_da_andy

    31. Dezember 2014 um 23:00 Uhr

  • @hello_there_andy Ja! Es ist PHP (eigentlich ist die Frage als PHP gekennzeichnet und es war die einzige Sprache, die ich vor 4 Jahren verwendet habe)

    – Neiger

    13. Januar 2015 um 17:25 Uhr

  • Im Juli 2015 funktioniert dies nicht mehr (Fehler: “Cannot query users by their username”)

    – Flimmer

    1. Juli 2015 um 9:07 Uhr

1646243651 835 Facebook API – Wie erhalte ich das Profilbild eines Facebook Benutzers uber
onosendai

AKTUALISIEREN:

Ab Ende August 2012 wurde die API aktualisiert, damit Sie Profilbilder von Benutzern in unterschiedlichen Größen abrufen können. Fügen Sie die optionalen Felder für Breite und Höhe als URL-Parameter hinzu:

https://graph.facebook.com/USER_ID/picture?width=WIDTH&height=HEIGHT

wo WIDTH und HEIGHT sind Ihre angeforderten Dimensionswerte.

Dadurch wird ein Profilbild mit einer Mindestgröße von zurückgegeben WIDTH x HEIGHT während Sie versuchen, das Seitenverhältnis beizubehalten. Zum Beispiel,

https://graph.facebook.com/redbull/picture?width=140&height=110

kehrt zurück

    {
      "data": {
        "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/c0.19.180.142/s148x148/2624_134501175351_4831452_a.jpg",
        "width": 148,
        "height": 117,
        "is_silhouette": false
      }
   }

AKTUALISIERUNG BEENDEN

Rufen Sie an, um das Profilbild eines Benutzers zu erhalten

https://graph.facebook.com/USER_ID/picture

wo USER_ID kann die Benutzer-ID-Nummer oder der Benutzername sein.

Rufen Sie an, um ein Benutzerprofilbild in einer bestimmten Größe zu erhalten

https://graph.facebook.com/USER_ID/picture?type=SIZE

wo SIZE sollte durch eines der Wörter ersetzt werden

square
small
normal
large

je nach gewünschter Größe.

Dieser Aufruf gibt a zurück URL zu einem einzelnen Bild, dessen Größe auf dem von Ihnen gewählten Typparameter basiert.

Zum Beispiel:

https://graph.facebook.com/USER_ID/picture?type=small

gibt eine URL zu einer kleinen Version des Bildes zurück.

Die API gibt nur die maximale Größe für Profilbilder an, nicht die tatsächliche Größe.

Quadrat:

maximale Breite und Höhe von 50 Pixel.

Klein

maximale Breite von 50 Pixel und eine maximale Höhe von 150 Pixel.

Normal

maximale Breite von 100 Pixel und eine maximale Höhe von 300 Pixel.

Groß

maximale Breite von 200 Pixel und eine maximale Höhe von 600 Pixel.

Wenn Sie die Standardeinstellung USER_ID/Bild aufrufen, erhalten Sie den quadratischen Typ.

KLÄRUNG

Wenn Sie anrufen (wie im obigen Beispiel)

https://graph.facebook.com/redbull/picture?width=140&height=110

es wird a zurückgegeben JSON Antwort wenn Sie eine der Facebook-SDKs-Anforderungsmethoden verwenden. Andernfalls wird das Bild selbst zurückgegeben. Um den JSON immer abzurufen, fügen Sie Folgendes hinzu:

&redirect=false

so:

https://graph.facebook.com/redbull/picture?width=140&height=110&redirect=false

  • Tolle Erklärung, aber der Rückgabewert der von Ihnen angegebenen URL (‘graph.facebook.com/redbull/…) antwortet mit einer Bild-URL im Location-Header („Location: fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/c0.19.180.142/…). nicht als JSON wie { “data”: { “url”: “fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/c0.19.180.142/…“, “Breite”: 148, “Höhe”: 117, “ist_Silhouette”: falsch } }

    – Gökhan Barış Aker

    22. November 2012 um 12:11 Uhr

  • Ich bekomme immer noch die gleiche Antwort wie in meiner Antwort. Sie können es im Graph Explorer auf Facebook Developers unter developer.facebook.com/tools/explorer ausprobieren. Geben Sie „redbull/picture?width=140&height=110“ ein und sehen Sie sich die Antwort an. Meine Antwort geht davon aus, dass Sie dies mit einer der Facebook-SDKs-API-/Anfragemethoden aufrufen, die eine JSON-Antwort zurückgeben.

    – onosendai

    31. Dezember 2012 um 1:44 Uhr

  • @GunnarKarlsson dir fehlt das &redirect=false um die JSON-Daten zurückzugeben, anstatt zum Bild umzuleiten

    – andrewtweber

    4. März 2013 um 5:43 Uhr

  • @andrewtweber vielen Dank. Ich habe der Antwort eine Klarstellung hinzugefügt.

    – onosendai

    4. März 2013 um 7:22 Uhr

  • Es ist Juli 2015 und das funktioniert nicht mehr. (Fehler: “Benutzer können nicht nach ihrem Benutzernamen abgefragt werden”)

    – Flimmer

    1. Juli 2015 um 9:08 Uhr

Facebook API – Wie erhalte ich das Profilbild eines Facebook Benutzers uber
Armand

Einfacher einzeiliger Code zum Speichern des Profilbildes in VOLLER Größe auf Ihrem Server.

<?php

copy("https://graph.facebook.com/FACEBOOKID/picture?width=9999&height=9999", "picture.jpg");

?>

Dies funktioniert nur, wenn openssl in php.ini aktiviert ist.

  • Es ist Juli 2015 und dies funktioniert nicht mehr (Fehler: “Benutzer können nicht nach ihrem Benutzernamen abgefragt werden”)

    – Flimmer

    1. Juli 2015 um 9:08 Uhr

  • Du hast alles falsch verstanden, Freund 🙂 Es ist deine Facebook-ID, kein Benutzername findmyfbid.com

    – NaturalBornCamper

    3. August 2015 um 16:37 Uhr

  • Das Beste von hier. Es ist definitiv verrückt, ich habe versucht, Daten in den Körper zu bekommen, und dann erscheinen Daten im Header @.@

    – Davus

    9. Juni 2016 um 15:34 Uhr

Dies wurde als Kommentar zur akzeptierten Antwort hinzugefügt, war jedoch der Meinung, dass es eine längere Erklärung verdient. Ab ca. April 2015 wird dies voraussichtlich einige Male angehoben.

Ab V2 der Graph-API funktioniert die akzeptierte Antwort nicht mehr mit einem Benutzernamen. Jetzt brauchen Sie also zuerst die Benutzer-ID, und Sie können keinen Benutzernamen mehr verwenden, um diese zu erhalten. Um die Sache noch komplizierter zu machen, ändert Facebook aus Datenschutzgründen jetzt die Benutzer-IDs pro App (siehe https://developers.facebook.com/docs/graph-api/reference/v2.2/user/ und https://developers.facebook.com/docs/apps/upgrading/#upgrading_v2_0_user_ids ), also müssen Sie eine Art ordnungsgemäße Authentifizierung haben, um eine Benutzer-ID abzurufen, die Sie verwenden können. Technisch gesehen ist das Profilbild immer noch öffentlich und unter /userid/picture verfügbar (siehe Dokumentation unter https://developers.facebook.com/docs/graph-api/reference/v2.0/user/picture und dieser Beispielbenutzer: http://graph.facebook.com/v2.2/4/picture?redirect=0) Es scheint jedoch unmöglich, die Standard-Benutzer-ID eines Benutzers nur anhand seines Profils herauszufinden – Ihre App müsste ihn dazu bringen, die Interaktion mit der App zu genehmigen, was für meinen Anwendungsfall (nur ein Profilbild neben seinem FB-Profillink anzeigen) übertrieben ist.

Wenn jemand einen Weg gefunden hat, das Profilbild basierend auf dem Benutzernamen zu erhalten, oder alternativ, wie man eine Benutzer-ID (auch eine alternative) erhält, um ein Profilbild abzurufen, bitte teilen! In der Zwischenzeit funktioniert die alte Grafik-URL noch bis April 2015.

1646243652 54 Facebook API – Wie erhalte ich das Profilbild eines Facebook Benutzers uber
Gemeinschaft

Eine Möglichkeit besteht darin, den Code Gamlet zu verwenden, der in seiner Antwort veröffentlicht wurde:

  • Speichern Sie es als curl.php

  • Dann in deiner Datei:

    require 'curl.php';
    
    $photo="https://graph.facebook.com/me/picture?access_token=" . $session['access_token'];
    $sample = new sfFacebookPhoto;
    $thephotoURL = $sample->getRealUrl($photo);
    echo $thephotoURL;
    

Ich dachte, ich würde das posten, weil ich ein bisschen Zeit gebraucht habe, um die Einzelheiten herauszufinden … Obwohl Profilbilder öffentlich sind, müssen Sie immer noch ein Zugriffstoken darin haben, um es zu bekommen, wenn Sie kräuseln es.

1646243653 767 Facebook API – Wie erhalte ich das Profilbild eines Facebook Benutzers uber
Xawier

Funktionierende PHP (HTTP GET) Lösung von April 2015 (ohne PHP 5 SDK):

function get_facebook_user_avatar($fbId){
        $json = file_get_contents('https://graph.facebook.com/v2.5/'.$fbId.'/picture?type=large&redirect=false');
        $picture = json_decode($json, true);
        return $picture['data']['url'];
}

Sie können den ‘Typ’ im Parameter ändern:

Quadrat:

maximale Breite und Höhe von 50 Pixel.

Klein

maximale Breite von 50 Pixel und eine maximale Höhe von 150 Pixel.

Normal

maximale Breite von 100 Pixel und eine maximale Höhe von 300 Pixel.

Groß

maximale Breite von 200 Pixel und eine maximale Höhe von 600 Pixel.

914630cookie-checkFacebook-API – Wie erhalte ich das Profilbild eines Facebook-Benutzers über die Facebook-API (ohne dass der Benutzer die Anwendung „zulassen“ muss)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy