web-dev-qa-db-fra.com

API graphique Facebook: ID de la photo de profil de l'utilisateur

Existe-t-il un moyen d'obtenir l'ID de l'image correspondant à la photo de profil actuelle d'un utilisateur?

Edit: OK, il semble qu'il n'y ait pas de moyen trivial d'obtenir l'ID!

Cependant, il ressort de tests aléatoires que chaque utilisateur possède un seul album avec l'attribut type="profile" et que la première image de cet album correspond toujours à la photo du profil. Il est donc possible d'obtenir l'identifiant de la photo du profil de cette façon. Certains plus expérimentés avec Facebook peuvent-ils confirmer qu'il en est toujours ainsi?

12
JacquesB

Vous pouvez obtenir la photo de profil public de l'utilisateur à partir de l'URL suivante:

https://graph.facebook.com/[id]/picture

Référence: http://developers.facebook.com/docs/reference/api/

18
Chris Coulson

La réponse semble êtreoui

par exemple, les photos d'un album ont un ID (la photo de profil est un objet différent, mais un ID de FB différent). Un identifiant pour chaque objet est un concept fondamental de la nouvelle API de graphes de FB: chaque objet du graphe social a aidentifiant unique .

En effet, la demande de données que j'ai déjà faite par le biais de l'API FB Graph renvoie (en cas de succès) une réponse sous la forme d'un tableau JSON, composée de paires ID-Valeur imbriquées, par ex. le champ éducation à partir d'un objet utilisateur:

"education": [
    {
       "school": {
           "id": "126533127390327",
           "name": "Massachusetts Institute of Technology"
    },
       "year": {
            "id": "140829239279495",
            "name": "1992"
    },
       "concentration": [
           {
                "id": "192578844099494",
                "name": "Computer Science"
           }
       ],
       "type": "College"
}

La photo de profil est un connexion de l'objetUtilisateur(chaque objet FB a donc Champs _ et Les liaisons).

Selon le tableau de la page de développeur FB correspondante , un appel à l'API Graph demandant image (photo (s) de profil de l'utilisateur)retourne une chaîne qui est l'URL pour la photo de profil de l'utilisateur.

Mais pourquoi ce même appel ne renvoie-t-il pas la photo de profil de l'utilisateur ID?

La raison pour laquelle je suppose est que l'URL renvoie:

Graph API : User Properties

La photo de profil de l'utilisateur n'est pas là, mais dans un nœud adjacent:

Graph API : User : Connections : picture

(Voir la documentation FB pour la structure de l'API graphique ici ).

Lorsque vous effectuez cet appel d'API, examinez leen-têtes de la demande, et en particulier leURL de la demande; lorsque vous le faites, vous verrez quelque chose comme ceci:

http://profile.ak.fbcdn.net/hprofile-ak-snc4/32093_100005743929541_5467982_q.jpg

La chaîne entre les traits de soulignement (100005743929541) est l'ID utilisateur. ceci est facile à vérifier en faisant un autre appel à l'API Graph. Dans la barre d’emplacement de votre navigateur (si vous êtes connecté à Facebook), entrez simplement:

https://graph.facebook.com/me

Encore une fois, le premier élément de cette chaîne JSON est l'ID de FB de l'utilisateur. Etant donné cela, il me semble que si l'ID de profil d'utilisateur a bien son propre ID, alors cette chaîne (ID de FB de l'utilisateur) plus les deux plus petites chaînes d'entiers adjacentes à chaque extrémité de l'ID, doivent être: it - en d’autres termes, 32093_100005743929541_5467982 dans l’URL de la demande ci-dessus.

Enfin, le meilleur moyen de répondre à cette question consiste peut-être à utiliser le nouvel explorateur API Graph . (J'ai juste essayé de vérifier cela, mais mes demandes sont en attente.)

5
doug

Il existe un autre moyen simple d'accomplir cette tâche.

  1. Récupère tous les albums facebook de https://graph.facebook.com/me/albums?access_token= .

  2. Boucle dans les albums et vérifie si objet type == 'profil'.

  3. Récupère la valeur de l'objet cover_photo type == 'profil'.

Cette valeur de cover_photo est l'id de la photo de profil de l'utilisateur.

Vous pouvez le vérifier par https://graph.facebook.com/ < cover_photo value >? Access_tokne =

2
Jashwant

Je ne sais pas si vous en avez toujours besoin, mais c'est comme ça que je l'ai fait en PHP:

$albumsfb = $facebook->api('/me/albums/?fields=type');
$albumsfb = $albumsfb['data'];
foreach ($albumsfb as $albumfb) {
    if ($albumfb['type']=='profile'){
        $albumprofile = $albumfb['id'];
        break;
    };
}
$photoprofilefb = $facebook->api('/'.$albumprofile.'/?fields=cover_photo');
$photoprofilefb = $photoprofilefb['cover_photo'];
$photoprofilefb = $facebook->api('/'.$photoprofilefb);
$fotoperfilfburl = $photoprofilefb['source'];

Au lieu de "moi", mettez l'ID utilisateur que vous voulez?

1
zorbakan
http://graph.facebook.com/<SOCIAL-ID>/picture?type=<small|normal|album|large|square>

SOCIAL-ID = Identifiant social renvoyé par Facebook.

small | normal | album | large | square = taille de l'image.

0
Anil Gupta