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は外部からたどり着けなくてもよいので、もし自分のアクセストークンを取得したいだけであれば、ローカルの開発環境にファイルを置いても構いません。
コメントを残す