Facebook Graph API: Erhalten Sie größere Bilder in einer Anfrage

88

Ich verwende derzeit den Graph API Explorer , um einige Tests durchzuführen. Das ist ein gutes Werkzeug.

Ich möchte die Freundesliste des Benutzers mit den Namen, IDs und Bildern der Freunde erhalten. Also tippe ich:

https://graph.facebook.com/me/friends?fields=id,picture,name

Aber das Bild ist nur 50x50, und ich möchte ein größeres in dieser Anfrage.

Ist es möglich ?

Martin
quelle

Antworten:

69

Sie müssen jedoch nicht das Bildattribut ziehen. Es gibt einen viel bequemeren Weg. Sie benötigen lediglich die Benutzer-ID (siehe Beispiel unten).

https://graph.facebook.com/user_id/picture?type=large

Der ps-Typ definiert die gewünschte Größe

Bitte beachten Sie, dass / me / friends bei Verwendung eines Tokens mit Grundberechtigungen nur eine Liste von Freunden mit den Attributen id + name zurückgibt

Biersturm
quelle
1
Aber ich bin mit Ihrem
Martin
27
ähm, was ist mit "in einer Anfrage"?
Iulian Onofrei
4
Sie können auch full_picture instat of picture verwenden.
Bo Pennings
"message": "(# 12) Bildkante für diesen Typ ist für Versionen v2.3 und höher veraltet",
Toolkit
197

Wie in beschrieben diesen Fehler auf Facebook, können Sie verlangen auch spezifische Bildgrößen jetzt über die neue API „ Felderweiterung “ Syntax.

Wie so:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)
thaddeusmt
quelle
26
Tatsächlich. fields = picture.width (640) ist noch besser.
Kaay
6
Es scheint, dass die Facebook Graph API ihre API geändert hat. Facebook antwortete "Unterfelder werden von Bildern nicht unterstützt", als ich versuchte, Ihren Vorschlag zu verwenden.
Phat H. VU
2
Fehler abrufen: {"error": {"message": "Nicht unterstützte Abrufanforderung . Bitte lesen Sie die Graph API-Dokumentation unter developer.facebook.com/docs/graph-api ", "type": "GraphMethodException", "code": 100}}
Vineesh TP
13
Siehe das? Field = full_picture, Anhänge für 2.x-Abfragen
Kevin
3
Mit neuen Facebook-Änderungen kann das größere Bild nicht abgerufen werden. Irgendein Hinweis jemand?
Shadab.tughlaq
81

Der beste Weg, um alle Freunde (die natürlich auch die App verwenden) mit den richtigen Bildgrößen zu erreichen, ist die Felderweiterung , entweder mit einem der Größen-Tags (quadratisch, klein, normal, groß):

/me/friends?fields=picture.type(large)

(bearbeiten: das funktioniert nicht mehr)

... oder Sie können die Breite / Höhe angeben:

me/friends?fields=picture.width(100).height(100)

Übrigens können Sie es auch so schreiben:

me?fields=friends{picture.type(large)}
luschn
quelle
1
Danke für die Info, ich werde die Antwort aktualisieren. full_picture scheint jedoch nicht für Freunde zu funktionieren: / me / friends? fields = full_picture - haben Sie eine Idee, wie dies möglich wäre?
Luschn
34

Ändern Sie das Array der Felder id,name,pictureinid,name,picture.type(large)

https://graph.facebook.com/v2.8/me?fields=id,name,picture.type(large)&access_token=<the_token>

Ergebnis:

{
   "id": "130716224073524",
   "name": "Julian Mann",
   "picture": {
      "data": {
         "is_silhouette": false,
         "url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/15032818_133926070419206_3681208703790460208_n.jpg?oh=a288898d87420cdc7ed8db5602bbb520&oe=58CB5D16"
      }
   }
}
Julian Mann
quelle
7
Wie ist 200 x 200 groß?
AlxVallejo
1
In der neuesten (2.10) Graph API ist nicht "groß" verfügbar:Graph returned an error: (#100) For field 'picture': type must be one of the following values: thumbnail, small, album
Honza
33

Sie können die Größe des Bildes wie folgt in Pixel einstellen:

https://graph.facebook.com/v2.8/me?fields=id,name,picture.width(500).height(500)

In ähnlicher Weise kann ein typeParameter verwendet werden

{user-id}/?fields=name,picture.type(large)

Aus der Dokumentation

Typ enum {klein, normal, Album, groß, quadratisch}

Agu Dondo
quelle
20

Ich habe mich intensiv mit dem Graph API Explorer befasst und schließlich full_picture gefunden

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture

PS Ich habe festgestellt, dass full_picture nicht immer das gewünschte Bild in voller Größe liefert. "Anhänge" tut

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments
Jonghee Park
quelle
Dies ist nur Showbreite: 720px. Du findest nur so ein großes Foto. Für die größte graph.facebook.com/photo_id können Sie 6 verschiedene Größen Fotos sehen.
Gokhan
Ich habe dies gerade mit dem Endpunkt des Freundes getestet und es hat nicht funktioniert
luschn
9

Hum ... Ich glaube, ich habe eine Lösung gefunden.

In der Tat kann in nur anfordern

https://graph.facebook.com/me/friends?fields=id,name

Laut http://developers.facebook.com/docs/reference/api/ (Abschnitt "Bilder") kann die URL der Profilfotos mit der Benutzer-ID erstellt werden

Angenommen, die Benutzer-ID befindet sich in $ id:

"http://graph.facebook.com/$id/picture?type=square"
"http://graph.facebook.com/$id/picture?type=small"
"http://graph.facebook.com/$id/picture?type=normal"
"http://graph.facebook.com/$id/picture?type=large"

Aber es ist nicht die endgültige Bild-URL. Wenn also jemand eine bessere Lösung hat, würde ich mich freuen zu wissen :)

Martin
quelle
3

Sie können width& heightin Ihrer Anfrage an die Facebook-Grafik-API angeben :http://graph.facebook.com/user_id/picture?width=500&height=500

Alexey Kislitsin
quelle
2

Von v2.7, /<picture-id>?fields=imageswerden Sie mit unterschiedlichen Größe der Bilder eine Liste geben, das erste Element das Bild in voller Größe zu sein.

Ich kenne keine Lösung für mehrere Bilder gleichzeitig.

maxbellec
quelle
1

Ersetzen Sie in der in den Grafikantworten gefundenen Bild-URL (die " http://photos-c.ak.fbcdn.net/ ") einfach die Standardeinstellung "_s.jpg" durch "_n.jpg" (? Normale Größe) oder "_b.jpg" (? große Größe) oder "_t.jpg" (Miniaturansicht).

Hacakable URLs / REST API verbessern das Web.

Ronan
quelle
1
Scheint immer "Es ist ein Fehler bei der Bearbeitung Ihrer Anfrage aufgetreten. Referenz # 50.27f74317.14274.604fb0" jetzt leider
Kevin
1

rest-fb-Benutzer (quadratisches Bild, größere Auflösung): Verbindung myFriends = fbClient.fetchConnection ("ich / Freunde", Benutzerklasse, Parameter.mit ("Felder", "öffentliches Profil, E-Mail, Vorname, Nachname, Geschlecht, Bild") .Breite (100) .Höhe (100) "));

Sigi
quelle
1

Ich habe diesen Fehler erhalten, als ich eine Anfrage gestellt habe mit picture.type(full_picture):

"(# 100) Für Feld 'Bild': Typ muss einer der folgenden Werte sein: klein, normal, Album, groß, quadratisch"

Wenn ich die Anfrage mit picture.type(album)und mache picture.type(square), antworte ich mit einem Bild von 50x50 Pixel Größe.

Wenn ich die Anfrage mit mache picture.type(large), antworte ich mit einem Bild von 200x200 Pixel Größe.

Wenn ich die Anfrage mit stelle picture.width(800), antworte ich mit einer Bildgröße von 477 x 477 Pixel.

mit picture.width(250)Antworten 320x320.

mit picture.width(50)Antworten 50x50.

mit picture.width(100)Antworten 100x100.

mit picture.width(150)Antworten 160x160.

Ich denke, dass Facebook die Bilder gibt, deren Größe unterschiedlich ist, wenn der Benutzer das Foto zum ersten Mal hinzufügt.

Was ich hier sehe, unterstützt die API zum Anfordern des Benutzerbilds die Größenänderung des angeforderten Bildes nicht. Es gibt die nächste Bildgröße, denke ich.

Ebleme
quelle
Richtig ... "picture.type (large)" gab mir auch eine 200x200 - nicht sehr groß, muss ich sagen
James
0

Ich denke, dass der einzige Weg, um große Bilder von Freunden zu bekommen, ab sofort die Verwendung von FQL ist. Zuerst müssen Sie eine Liste von Freunden abrufen:

https://graph.facebook.com/me/friends

Dann analysiere diese Liste und extrahiere alle Freunde ids. Wenn Sie das haben, führen Sie einfach die folgende FQL-Abfrage aus:

SELECT id, url FROM profile_pic WHERE id IN (id1, id2) AND width=200 AND height=200

200Hier ist nur eine beispielhafte Größe, Sie können alles eingeben. Sie sollten die folgende Antwort erhalten:

{
  "data": [
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }, 
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }
  ]
}

Jede URL ist der Link zu einem 200x200px-Bild.

Paweł Gościcki
quelle
0

Ich habe das gleiche Problem, aber ich habe dieses versucht, um mein Problem zu lösen. es gibt ein großes Bild zurück. Es ist nicht die perfekte Lösung, aber Sie können diese ausprobieren.

https://graph.facebook.com/v2.0/OBJECT_ID/picture?access_token=XXXXX

Ajay
quelle
Fügen Sie der Anfrage einfach einen weiteren Parameter hinzu: type = large. Bitte überprüfen Sie meine Antwort unten.
geboren zu hula
0

Versuchen Sie, die Größe des Bildes zu ändern, indem Sie die Pixelgröße von der URL in jedem JSON-Objekt wie folgt ändern:

Zum Beispiel ändere ich s480x480 in s720x720

Vorher: https://fbcdn-sphotos-ca.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s480x480/10454308_773207849398282_283493808478577207_n.jpg

Nachher: https://fbcdn-sphotos-ca.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s720x720/10454308_773207849398282_283493808478577207_n.jpg

EX
quelle
0

Variante im JS-Stil. Stellen Sie einfach eine enorme große Bildbreite ein und Sie erhalten die größte Variante.

FB.api(
  '/' + userId,
  {fields: 'picture.width(2048)'},
  function (response) {
    if (response && !response.error) {
      console.log(response.picture.data.url);
    }
  }
);
Dzmitry Vasilevsky
quelle
0

Sie können full_picture anstelle des Bildschlüssels verwenden, um ein Bild in voller Größe zu erhalten.

Khalil ur Rehman
quelle