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 ?

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


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)

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)}

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"
      }
   }
}

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}



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

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 :)



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


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.


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.


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


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.


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.




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

0

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.