web-dev-qa-db-fra.com

Facebook Graph API: obtenez de plus grandes photos en une requête

J'utilise actuellement l'explorateur d'API graphique pour effectuer des tests. C'est un bon outil.

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

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

Mais la photo n’est que de 50x50, et j’aimerais une plus grande dans cette demande.

C'est possible ?

82
Martin

vous n'avez pas besoin de tirer l'attribut 'image' cependant. 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

p.s. type définit la taille que vous voulez

n'oubliez pas que si vous utilisez un jeton avec des autorisations de base,/me/friends renverra la liste d'amis uniquement avec les attributs id + name

66
guleryuz

Comme décrit dans ce bogue sur Facebook, vous pouvez également demander des tailles d'image spécifiques maintenant via la nouvelle API " expansion du champ ".

Ainsi:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)
191
thaddeusmt

Le meilleur moyen d'obtenir tous les amis (qui utilisent également l'application, bien sûr) avec des tailles d'image correctes est d'utiliser expansion du champ , soit avec l'une des balises de taille (carré, petit, normal, grand ):

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

(edit: 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)}
74
luschn

Changez le tableau de champs id,name,picture En id,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"
      }
   }
}
33
Julian Mann

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 paramètre type peut être utilisé

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

De la documentation

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

28
Agu Dondo

J'ai longuement recherché Graph API Explorer et j'ai finalement trouvé full_picture

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

P.S. J'ai remarqué que full_picture ne fournira pas toujours l'image complète que je veux. "pièces jointes" fait

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

Vous pouvez également essayer d’obtenir l’image si vous le souhaitez en fonction de la hauteur ou de la largeur.

https://graph.facebook.com/user_id/picture?height=

OR

https://graph.facebook.com/user_id/picture?width=

Les valeurs sont par défaut en pixels il vous suffit de fournir la valeur int

19
Swaprks

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

En fait, je peux juste demander

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

Selon http://developers.facebook.com/docs/reference/api/ (section "Images"), les URL des photos du profil peuvent être générées avec l'identifiant de l'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 le savoir :)

9
Martin

Vous pouvez spécifier la largeur et la hauteur dans votre demande à l'API graphique Facebook: http://graph.facebook.com/user_id/picture?width=500&heigth=500

2
Alexey Kislitsin

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

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

2
maxbellec

Dans les images URL trouvées dans les réponses du graphique (les " http://photos-c.ak.fbcdn.net/ "), il suffit de remplacer la valeur par défaut "_s.jpg" par "_n.jpg "(? taille normale) ou" _b.jpg "(? grande taille) ou" _t.jpg "(miniature).

Les API/REST Hacakable améliorent le Web.

1
Ronan

rest-fb utilisateurs (image carrée, résolution plus grande): Connexion myFriends = fbClient.fetchConnection ("me/friends", User.class, Parameter.with ("fields", "public_profile, email, prénom, dernier nom, sexe, image) .la largeur (100). la hauteur (100) "));

1
sigi

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

0
Khalil ur Rehman

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 aller chercher 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

200 voici 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 constituant le lien vers une image 200x200px.

0
Paweł Gościcki

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

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

0
Ajay

essayez de modifier la taille de l'image en modifiant la taille en pixels de l'URL de chaque objet JSON comme suit:

par exemple, je change s480x480 en s720x720

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

Après: https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s720x720/10454308_773207849398282_283493808478577207_n.jpg

0
E_X

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

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

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

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

Lorsque je fais la demande avec picture.width(800), il 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 redimensionné différemment lorsque l'utilisateur ajoute cette photo pour la première fois.

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

0
Ebleme

JS style variante. 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
Dzmitry Vasilevsky