L'obtention de Facebook photo de profil de l'utilisateur (via Graphique) - détecter si c'est un vide (c'est à dire par défaut) de l'image?
Je suis en train de récupérer les photos de profil de les gens commentent sur un client Facebook page, de sorte qu'ils peuvent être affichées sur le site web, etc.
Je suis de l'Id d'utilisateur via le /[page_name]/feed/
graphique appeler et je suis en train de mettre cela dans une URL de la forme de la sorte:
$id = $item['from']['id'];
$link = "http://graph.facebook.com/{$id}/picture?type=large";
Ça fonctionne bien, je vais avoir un certain nombre de photos de profil arrière, toutefois, certains ressemblent à ceci: http://profile.ak.fbcdn.net/static-ak/rsrc.php/v1/yp/r/yDnr5YfbJCH.gif
Je veux seulement montrer de vrais photos de profil existe - il un moyen de détecter que?
OriginalL'auteur | 2011-11-02
Vous devez vous connecter pour publier un commentaire.
C'est faisable, mais aura besoin de comparaison de fichiers.
Facebook utilise 2 images comme des avatars par défaut, 1 pour les hommes, une autre pour les femmes.
Donc, vous aurez à comparer l'image que vous obtenez avec l'un de ces.
Une simple comparaison serait de comparer les deux d'entre eux après la conversion de leurs octets pour les cordes.
Exemple le plus simple :
Qui serait une opération lente, donc vous pouvez le mettre comme une tâche cron pour vérifier les images en arrière-plan.
Vous pouvez l'optimiser un peu en stockant le md5 de l'avatar par défaut en db, alors que de 1 URL doivent être récupérées à des fins de comparaison.
Ce qui peut être fait CHANGEMENT de la PREUVE, l'utilisation d'une api graphique url, ce qui est sûr pour le retour de l'avatar par défaut, vous n'avez pas à vous soucier de changement de l'avatar par défaut de l'image , il vous suffit de comparer les 2 api graphique URL.
par exemple. comparer :
a )
http://graph.facebook.com/MY_TEST_ID/picture?type=large
( ce qui renvoie toujours l'avatar par défaut)b)
http://graph.facebook.com/MY_NEW_USER_ID/picture?type=large
( l'utilisateur que je veux tester)Cela peut être fait CHANGEMENT de la PREUVE, l'utilisation d'une api graphique url, ce qui est sûr pour le retour de l'avatar par défaut, vous n'avez pas à vous soucier de changement de l'avatar par défaut de l'image , il vous suffit de comparer les 2 api graphique URL
Juste point - encore un peu hackish bien. Merci.
Bien que cette approche peut fonctionner, c'est hackish et pas nécessaire. Voir ma réponse ci-dessous pour une description de la façon de le faire correctement, à l'aide de la
is_silhouette
valeur Graphique fournitCe n'est plus la bonne réponse, @MattRabe réponse est une meilleure approche.
OriginalL'auteur DhruvPathak
L'API Graphique inclut un indicateur qui permet de détecter la présence ou non d'un utilisateur facebook avatar est celui par défaut...
Vous pouvez accomplir cela en ajoutant
&redirect=false
à la fin de votre Graphique URL de l'image.Par exemple:
Normale url de l'image comme
va rediriger vers un fichier d'image, donnant l'impression de retourner une image réelle.
Mais une url telle que
sera de retour JSON - quelque chose comme:
(source: http://developers.facebook.com/docs/reference/api/using-pictures/)
Mise à JOUR:
URI a changé:
type=large
ne fonctionne plus, vous devez maintenant spécifier explicite largeur/hauteur de la sorte:Note le
"is_silhouette"
attribut - il seratrue
oufalse
. Sitrue
, l'utilisateur de facebook image est un par défaut image.Faire de ce jugement sur un "inline" base nécessitera cURL, et vous pourriez intégrer à votre code à quelque chose comme ceci:
OriginalL'auteur Matt Rabe
De hachage de l'image par défaut, stocker la valeur de hachage par défaut, mâle/femelle, comparer?
OriginalL'auteur StrangeWill
Si vous êtes déjà faire un appel à l'API Graphique pour obtenir les données de l'utilisateur comme l'avatar, ne pas faire un appel API supplémentaire à
/picture
comme suggéré ci-dessus.Il suffit d'inclure
picture
dans le champs param lorsque vous effectuez votre premier appel à l'API Graphique, puis la réponse comprend l'is_silhouette
compensés, s'il est défini à true, l'utilisateur a l'avatar par défaut.Demande:
Réponse:
OriginalL'auteur Mitchell McKenna