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 ?
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
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)
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)}
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"
}
}
}
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é}
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
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
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 :)
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
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.
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.
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) "));
Vous pouvez utiliser full_picture au lieu de la touche image pour obtenir une image en taille réelle.
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.
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
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
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.
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);
}
}
);