Каков правильный способ проверки того, что пользователь вставил изображение профиля в Facebook (то есть изображение не по умолчанию), и если да, то для его получения?
Это: Как определить, загрузил ли пользователь Facebook изображение профиля или его значение по умолчанию? говорит о методе, но сам автор говорит, что это плохой метод:
public static function hasProfilePicture($fbuid) { /* Really stupid method to test if Facebook user has real profile picture * based on FB returning a gif when you request a large photo. * Use with care - for every profile there's an outgoing request! */ $r = get_headers("http://graph.facebook.com/$fbuid/picture?type=square"); return !array_search("Content-Type: image/gif",$r); }
Если у пользователя есть фотография профиля, к ней можно получить доступ через http://graph.facebook.com/<facebook username>/picture. Например, http://graph.facebook.com/gauravgupta.in/picture перенаправляет на определенный URL-адрес и показывает мое изображение профиля Facebook.
http://graph.facebook.com/<facebook username>/picture
Однако, если у пользователя нет изображения профиля, вышеуказанный URL-адрес перенаправляется на URL-адрес стандартного изображения заполнителя, который в настоящее время равен http://profile.ak.fbcdn.net/static-ak/rsrc.php/v1/yo/r/UlIqmHJn-SK.gif
Это определенно ненадежный способ, но он будет работать, пока Facebook не решит изменить его.