phpのfile_get_contentsでHEAD Request
まあ、普通にできるんですけど、あんまりHeadでリクエストする人もいないのか、あんまり記事がなかったので、メモ。
<?php echo getAvaterImageUrl('fb', 'junichi.ishida'); echo '<br>'; echo getAvaterImageUrl('tw', 'uzulla'); function getAvaterImageUrl($mode, $id){ $opts = array( 'http'=>array( 'method'=>"HEAD", ) ); $context = stream_context_create($opts); if($mode=='fb'){ $file = file_get_contents('https://graph.facebook.com/'.$id.'/picture', false, $context); }else if($mode=='tw'){ $file = file_get_contents('http://api.twitter.com/1/users/profile_image/'.$id, false, $context); }else{ return null; } $location = array_merge(preg_grep('/^location:/i', $http_response_header)); $url = preg_replace('/location:[ ]*/i', '', $location[0]); return $url; }
見てわかる通り、TwitterとFacebookで、ユーザーのID、Screen_nameを元にアバターアイコンの実体URLを取得する方法ですね。
所で、FacebookはAPI経由でアイコンにアクセスさせて文句いわれないみたいですけど(特に文句をかいてないので)、Twitterの方はユーザーには出すなとかかいてあってこんな面倒なコードをかかないといけない。
最近のTwitterは微妙だからもっとがんばってほしいわー、ホントFBをみならってほしいわー。
http://dev.twitter.com/doc/get/users/profile_image/:screen_name
http://developers.facebook.com/docs/reference/api/