6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPでGitHubAPIを使うときはユーザエージェントが罠

Last updated at Posted at 2016-02-18

#はじめに
GitHubAPIで、OAuth認証してデータ取得する為の方法を
メモっておきます。

言いたいことは、タイトルで終わっています。
他は特に嵌るポイントはないです。

#OAuth認証するメリット
OAuth認証しないと1時間に60回しかリクエストを送れません。
認証すると、1時間5000回までいけるようになります。

このAPIを利用して、ちょっとしたwebサービスでも作ろうと思ったら
基本OAuth認証が必要になります。

#嵌りどころ

##ユーザエージェントが罠
PHPでfile_get_contentsでリクエストを送ると
リクエストヘッダのユーザエージェントが、デフォルトで
「PHP/x.x.x」になります。

この「PHP/x.x.x」をGitHubAPIが弾いているようで
そのままリクエストを送ると403が返ってきます。

その為、php.iniのユーザエージェント設定を変更するか
file_get_contentsにてユーザエージェントを指定する必要があります。

参考
http://webtech-walker.com/archive/2007/05/08223419.html
http://xirasaya.com/?m=detail&hid=320

#サンプルコード

$options = array(
    'http'=>array(
        'method'  => 'GET',
        'header'  => array(
                'Authorization: token [API_TOKEN]',
                'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36',
        )
    )
);
$context = stream_context_create( $options );
$contents = file_get_contents( 'https://api.github.com/users/bzz0217', FALSE, $context );
var_dump($contents);

#変更が必要な箇所
上記サンプルコードを動かす為に必要な変更箇所です。

##APIトークンの設定
[API TOKEN]の箇所に自身のGitHubのAPIトークンを設定してください。

                'Authorization: token [API_TOKEN]',

APIトークンの取得がまだの方は下記記事を参考に取得してください。
http://blog.fkoji.com/2012/09051441.html

##リクエストするURLを変更
リクエストしたいURLを変更してください。

$api_url = 'https://api.github.com/users/bzz0217';

どんなことが出来るかは、下記マニュアルを参照ください。
https://developer.github.com/v3/repos/

#Lets'エンジョイ!
では、GitHubAPIでLets'エンジョイ!
快適なAPIリクエストライフをお楽しみ下さいw

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?