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 ?

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


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)

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

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

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



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

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


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


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.


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.


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


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.


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.




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

0

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.