OAuth認証でGitHub APIのアクセストークンを取得する
ここでは GitHub API を使う準備段階として、アプリケーション登録をして自分のアクセストークンを取得するまでを簡単に説明します。
まず開発するアプリケーション情報を登録します。

- Applications の画面を開いて Developer Applications のほうにある「Register new application」をクリック。
- Application Name, Main URL, Callback URL を入力。
- Client ID と Client Secret が発行される。
あとはよくあるOAuth 2.0の認証フローに従ってコードを組めばアクセストークンを取得できます。ドットインストールのレッスンでは「FacebookでログインするWebサービスの基礎」とか「InstagramでログインするWebサービスの基礎」あたりです。
とりあえずざっとPHP用のコードを載せておきます。
<?php
define('CLIENT_ID', '上記で取得したClient ID');
define('CLIENT_SECRET', '上記で取得したClient Secret');
if (empty($_GET['code'])) {
// Authrize URLの構築
$params = array(
'client_id' => CLIENT_ID,
'scope' => 'repo', // 必須ではない。下記説明参照。
);
$authorizeUrl = 'https://github.com/login/oauth/authorize?'
. http_build_query($params);
header('Location: ' . $authorizeUrl);
} else {
// アクセストークン取得
$accessTokenUrl = 'https://github.com/login/oauth/access_token';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $accessTokenUrl);
curl_setopt($curl, CURLOPT_POST, 1);
$params = array(
'client_id' => CLIENT_ID,
'client_secret' => CLIENT_SECRET,
'code' => $_GET['code'],
);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
curl_close($curl);
echo $res;
}
こんな感じのコードを適当にサーバーに置いてブラウザからアクセスします。そうすると以下のようなAuthorize画面が表示されるので、「Allow」をクリックすればアクセストークンを取得できます。

最初のパラメータについてだけ説明しておくと、
- 必須なのは client_id のみ。
- scope は public なデータを GET するだけなら不要だが、データの POST とか非公開リポジトリ下へのアクセスとかをしたければ必須。その値についてはドキュメントを参照のこと。
- redirect_uri を指定可能。指定しない場合は、アプリケーション登録時に Callback URL に指定したURLが使われる。
- CSRF対策のために state をつけることも可。
といった感じ。
リダイレクト先のURLは外部からたどり着けなくてもよいので、もし自分のアクセストークンを取得したいだけであれば、ローカルの開発環境にファイルを置いても構いません。
コメントを残す