API Facebook Graph: obtenez des images plus grandes en une seule demande

88

J'utilise actuellement l'Explorateur d'API Graph pour faire des tests. C'est un bon outil.

Je veux obtenir la liste d'amis de l'utilisateur, avec les noms, identifiants et photos des amis. Alors je tape:

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

Mais l'image est seulement 50x50, et j'aimerais une plus grande dans cette demande.

C'est possible ?

Martin
la source

Réponses:

69

vous n'avez cependant pas besoin de tirer l'attribut «image». il existe un moyen beaucoup plus pratique, la seule chose dont vous avez besoin est userid, voir l'exemple ci-dessous;

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

le type ps définit la taille souhaitée

Veuillez garder à l'esprit qu'en utilisant un jeton avec des autorisations de base, / me / friends ne renverra la liste d'amis qu'avec les attributs id + name

orage
la source
1
Mais je ne suis pas d'accord avec vous dernière phrase: avec une autorisation de base, vous pouvez accéder à plus de l'attribut id + name, ex: graph.facebook.com/btaylor
Martin
29
euh, qu'en est-il "en une seule demande"?
Iulian Onofrei
4
U peut également utiliser l'instat full_picture de l'image.
Bo Pennings
"message": "(# 12) le bord de l'image pour ce type est obsolète pour les versions v2.3 et supérieures",
Toolkit
198

Comme décrit dans ce bogue sur Facebook, vous pouvez également demander des tailles d'image spécifiques maintenant via la nouvelle syntaxe «d' extension de champ » de l'API .

Ainsi:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)
thaddeusmt
la source
27
En effet. fields = picture.width (640) est encore mieux.
kaay
6
Il semble que l'API Facebook Graph ait changé son API. Facebook a répondu "Les sous-champs ne sont pas pris en charge par l'image" lorsque j'ai essayé d'utiliser votre suggestion.
Phat H.VU
2
obtention de l'erreur: {"error": {"message": "Requête d'obtention non prise en charge. Veuillez lire la documentation de l'API Graph à l' adresse developer.facebook.com/docs/graph-api ", "type": "GraphMethodException", "code": 100}}
Vineesh TP
13
Voir le? Field = full_picture, pièces jointes pour les requêtes 2.x
Kevin
3
Avec les nouvelles modifications Facebook, impossible d'obtenir une image plus grande. Une allusion à quelqu'un?
shadab.tughlaq
81

La meilleure façon d'obtenir tous les amis (qui utilisent également l'application, bien sûr) avec des tailles d'image correctes est d'utiliser l' extension de champ , soit avec l'une des balises de taille (carré, petit, normal, grand):

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

(modifier: cela ne fonctionne plus)

... ou vous pouvez spécifier la largeur / hauteur:

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

Btw, vous pouvez aussi l'écrire comme ceci:

me?fields=friends{picture.type(large)}
Luschn
la source
1
merci pour l'info, je mettrai à jour la réponse. Cependant, full_picture ne semble pas fonctionner pour les amis: / me / friends? fields = full_picture - avez-vous une idée de la manière dont cela serait possible?
luschn
34

Remplacez le tableau de champs id,name,pictureparid,name,picture.type(large)

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

Résultat:

{
   "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
la source
7
Quelle est la taille de 200 x 200?
AlxVallejo
1
Dans la dernière version (2.10) de l'API Graph n'est pas une "grande" taille disponible:Graph returned an error: (#100) For field 'picture': type must be one of the following values: thumbnail, small, album
Honza
33

Vous pouvez définir la taille de l'image en pixels, comme ceci:

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

De la même manière, le typeparamètre peut être utilisé

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

De la documentation

type enum {petit, normal, album, grand, carré}

Agu Dondo
la source
20

J'ai fait des recherches approfondies sur Graph API Explorer et j'ai finalement trouvé full_picture

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

PS J'ai remarqué que full_picture ne fournira pas toujours l'image pleine taille que je veux. 'attachments' fait

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments
Parc Jonghee
la source
ce n'est que la largeur du spectacle: 720px. Votre seule grande photo trouve comme ça. pour le plus grand graph.facebook.com/photo_id vous pouvez voir 6 photos de tailles différentes.
gokhan
Je viens de tester cela avec le point de terminaison des amis et cela n'a pas fonctionné
luschn
9

Hum ... je pense avoir trouvé une solution.

En fait, en peut simplement demander

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

Selon http://developers.facebook.com/docs/reference/api/ (section "Images"), l'url des photos du profil peut être construite avec l'ID utilisateur

Par exemple, en supposant que l'ID utilisateur est dans $ 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"

Mais ce n'est pas l'URL de l'image finale, donc si quelqu'un a une meilleure solution, je serais heureux de savoir :)

Martin
la source
1
TYPES DE TAILLE D'IMAGE: développeurs.facebook.com
docs
3

Vous pouvez spécifier width& heightdans votre demande à l'API graphique Facebook:http://graph.facebook.com/user_id/picture?width=500&height=500

Alexey Kislitsin
la source
2

De v2.7,/<picture-id>?fields=images vous donnera une liste avec différentes tailles d'images, le premier élément étant l'image en taille réelle.

Je ne connais aucune solution pour plusieurs images à la fois.

maxbellec
la source
1

Dans les images URL trouvée dans les réponses Graph (le " http://photos-c.ak.fbcdn.net/ "), remplacez simplement la valeur par défaut "_s.jpg" par "_n.jpg" (? Taille normale) ou "_b.jpg" (? grande taille) ou "_t.jpg" (miniature).

Les URL Hacakables / API REST améliorent le Web.

Ronan
la source
1
Semble toujours donner "Une erreur s'est produite lors du traitement de votre demande. Référence # 50.27f74317.14274.604fb0" maintenant malheureusement
Kevin
1

Utilisateurs rest-fb (image carrée, plus grande résolution): Connexion myFriends = fbClient.fetchConnection ("moi / amis", User.class, Parameter.with ("fields", "public_profile, email, first_name, last_name, gender, picture .largeur (100) .hauteur (100) "));

sigi
la source
1

J'ai eu cette erreur lorsque j'ai fait une demande avec picture.type(full_picture):

"(# 100) Pour le champ 'image': le type doit être l'une des valeurs suivantes: petit, normal, album, grand, carré"

Quand je fais la demande avec picture.type(album)etpicture.type(square) , me répond avec une taille d'image de 50x50 pixels.

Lorsque je fais la demande avec picture.type(large), me répond avec une taille d'image de 200x200 pixels.

Lorsque je fais la demande avec picture.width(800), me répond avec une taille d'image de 477x477 pixels.

avec picture.width(250), réponses 320x320.

avec picture.width(50), réponses 50x50.

avec picture.width(100) , réponses 100x100.

avec picture.width(150) , réponses 160x160.

Je pense que Facebook donne les images qui ont été redimensionnées différemment lorsque l'utilisateur ajoute cette photo pour la première fois.

Ce que je vois ici, l'API pour demander l'image utilisateur ne prend pas en charge le redimensionnement de l'image demandée. Cela donne la taille d'image la plus proche, je pense.

Eblème
la source
Vrai ... "picture.type (large)" m'a également donné un 200x200 - pas très grand je dois dire
James le
0

Je pense qu'à partir de maintenant, la seule façon d'obtenir de grandes photos d'amis est d'utiliser FQL. Tout d'abord, vous devez récupérer une liste d'amis:

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

Ensuite, analysez cette liste et extrayez tous les amis ids. Lorsque vous avez cela, exécutez simplement la requête FQL suivante:

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

200voici juste une taille exemplaire, vous pouvez entrer n'importe quoi. Vous devriez obtenir la réponse suivante:

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

Chaque URL étant le lien vers une image 200x200px.

Paweł Gościcki
la source
0

J'ai le même problème mais j'ai essayé celui-ci pour résoudre mon problème. il renvoie une grande image. Ce n'est pas la solution parfaite, mais vous pouvez essayer celle-ci.

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

Ajay
la source
Ajoutez simplement un paramètre supplémentaire à la requête: type = large. Veuillez vérifier ma réponse ci-dessous.
né à hula
0

Variante de style JS. Il suffit de définir une très grande largeur d'image et vous obtiendrez la plus grande variante.

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

Vous pouvez utiliser full_picture au lieu de la clé image pour obtenir une image en taille réelle.

Khalil ur Rehman
la source