c/fe

http://d.hatena.ne.jp/uzulla から移行しました。

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;
}

見てわかる通り、TwitterFacebookで、ユーザーのID、Screen_nameを元にアバターアイコンの実体URLを取得する方法ですね。


所で、FacebookAPI経由でアイコンにアクセスさせて文句いわれないみたいですけど(特に文句をかいてないので)、Twitterの方はユーザーには出すなとかかいてあってこんな面倒なコードをかかないといけない。
最近のTwitterは微妙だからもっとがんばってほしいわー、ホントFBをみならってほしいわー。


http://dev.twitter.com/doc/get/users/profile_image/:screen_name
http://developers.facebook.com/docs/reference/api/