261 votes

API de Facebook - Comment obtenir l'image de profil d'un utilisateur de Facebook par l'intermédiaire de l'API de Facebook (sans demander à l'utilisateur d'autoriser l'application) ?

Je travaille sur un CMS qui récupère l'image de profil d'un utilisateur à partir de son profil Facebook. URL (c'est-à-dire, http://facebook.com/users_unique_url ). Comment puis-je réaliser cela ? Existe-t-il un appel de l'API Faceboook qui permet de récupérer l'URL de l'image de profil d'un utilisateur sans que ce dernier ait à Autoriser l'application ?

410voto

Sarfraz Points 168484

Il suffit de récupérer les données par le biais de cette URL :

http://graph.facebook.com/sarfraz.anees/picture

Remplacer sarfraz.anees (mon nom) avec le nom de l'utilisateur dont vous voulez obtenir la photo.

Vous pouvez utiliser la fonction file_get_contents pour lire cette URL et traiter les données récupérées.

Ressource :

http://developers.facebook.com/docs/api

Note : Sur php.ini vous devez vous assurer que le OpenSSL est activé pour utiliser l'extension file_get_contents de PHP pour lire cette URL.

268voto

neiker Points 3066

Pour montrer :

50x50 pixels

<img src="https://graph.facebook.com/<?= $fid ?>/picture">

200 pixels de largeur

<img src="https://graph.facebook.com/<?= $fid ?>/picture?type=large">

Pour économiser

$img = file_get_contents('https://graph.facebook.com/'.$fid.'/picture?type=large');
$file = dirname(__file__).'/avatar/'.$fid.'.jpg';
file_put_contents($file, $img);

Où $fid est votre identifiant d'utilisateur (ou pseudo) sur Facebook..

164voto

Gunnar Karlsson Points 15071

UPDATE :

Depuis fin août 2012, l'API a été mise à jour pour vous permettre de récupérer les photos de profil des utilisateurs en différentes tailles. Ajoutez les champs facultatifs de largeur et de hauteur comme paramètres d'URL :

https://graph.facebook.com/USER_ID/picture?width=WIDTH&height=HEIGHT

donde WIDTH y HEIGHT sont les valeurs des dimensions demandées.

Vous obtiendrez ainsi une photo de profil d'une taille minimale de 1 000 pixels. WIDTH x HEIGHT tout en essayant de préserver le rapport d'aspect. Par exemple,

https://graph.facebook.com/redbull/picture?width=140&height=110

renvoie à

    {
      "data": {
        "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/c0.19.180.142/s148x148/2624_134501175351_4831452_a.jpg",
        "width": 148,
        "height": 117,
        "is_silhouette": false
      }
   }

FIN UPDATE

Pour obtenir la photo de profil d'un utilisateur, appelez

https://graph.facebook.com/USER_ID/picture

donde USER_ID peut être le numéro d'identification de l'utilisateur ou le nom de l'utilisateur.

Pour obtenir une photo de profil d'utilisateur d'une taille spécifique, appelez

https://graph.facebook.com/USER_ID/picture?type=SIZE

donde SIZE doit être remplacé par l'un des mots suivants

square
small
normal
large

en fonction de la taille que vous souhaitez.

Cet appel renverra un URL à une seule image dont la taille est basée sur le paramètre de type que vous avez choisi.

Par exemple :

https://graph.facebook.com/USER_ID/picture?type=small

renvoie une URL vers une petite version de l'image.

L'API ne spécifie que la taille maximale des images de profil, et non la taille réelle.

Carré :

largeur et hauteur maximales de 50 pixels.

Petit

une largeur maximale de 50 pixels et une hauteur maximale de 150 pixels.

Normal

une largeur maximale de 100 pixels et une hauteur maximale de 300 pixels.

Large

une largeur maximale de 200 pixels et une hauteur maximale de 600 pixels.

Si vous appelez le USER_ID/picture par défaut, vous obtenez le type carré.

CLARIFICATION

Si vous appelez (selon l'exemple ci-dessus)

https://graph.facebook.com/redbull/picture?width=140&height=110

il retournera un JSON réponse si vous utilisez l'une des méthodes de demande du SDK de Facebook. . Sinon, il renverra l'image elle-même. Pour toujours récupérer le JSON, ajoutez :

&redirect=false

comme ça :

https://graph.facebook.com/redbull/picture?width=140&height=110&redirect=false

20voto

NaturalBornCamper Points 829

Pour obtenir l'URL de l'image, PAS le contenu binaire :

$url = "http://graph.facebook.com/$fbId/picture?type=$size";

$headers = get_headers($url, 1);

if( isset($headers['Location']) )
    echo $headers['Location']; // string
else
    echo "ERROR";

19voto

Armand Points 346

Un simple code d'une ligne pour sauvegarder une image de profil de taille COMPLÈTE sur votre serveur.

copy(" https://graph.facebook.com/FACEBOOKID/picture?width=9999&height=9999 ", " image.jpg ") ;

Cela ne fonctionnera que si openssl est activé dans le php.ini.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X