GitHub の OAuth Token とは?
GitHub API を使って GitHub 上の情報を取得するには、GitHub上で発行されるアクセストークンが必要です。
なくても問題はないのですが、取得数が1時間に60回と制限されてしまいます。
アクセストークンには以下の3つがあります。
- OAuth Access Token
- Personal Access Token
手順
大まかな手順は以下の通りです。
- OAuthの設定をする:この時、**Client ID ** と Client Secret を取得します
- GitHub ログイン画面に遷移
- 一時コードを取得する
- POSTリクエストしてアクセストークンを取得する
詳細
OAuth の設定
その中の Developer settings へ移動します。
その中に、以下の3つがあるはずです(2024年4月現在)
- GitHub Apps
- OAuth Apps
- Personal access tokens
今回は OAuth Apps を選択します。
OAuth App を新規登録します。New OAuth App をクリックします。
記載したら Register application をクリックします。
この時に、Client IDとClient secrets を取得するので、どこかに一旦メモったほうが良いです。
これで、OAuth の設定をすることができました。
GitHub ログイン画面に遷移
以下のアドレスで GitHub のログインページにジャンプします。
https://github.com/login/oauth/authorize?client_id=XXX&scope=YYY`
XXX
に先ほど取得した Client IDを入れます。
YYY
は、パラメータに取得したい情報のスコープを指定します。(repo
や user
、gist
など)
スコープの詳細については↓を参照ください。
一時コードを取得する
GitHubからのリダイレクト要求により、リダイレクト先のページにアクセスします。この時、URLの末尾にアクセストークン取得用の一時コードが次のような形でついてきます。
http://<リダイレクト先のページ>?code=ABCDEABCDEABCDE
このコードはアクセストークンではありません。アクセストークンは、後でHTTP POST メソッドで一時コードを送ることで取得することができます。
一時的なものなので、一定時間(5〜10分くらい?)を過ぎると更新されます。(再度、GitHubログインすると取得できます。)
POSTリクエストしてアクセストークンを取得する
先ほど取得した一時コードを使って、以下のアドレスに POST リクエストを送ります。Postman などを使うと良いでしょう。
https://github.com/login/oauth/access_token
POSTリクエストには、次のようなパラメータを含めておく必要があります。Body に以下を追加しましょう。
client_id:XXXX
client_secret:YYYY
code:ZZZZ
client_id
は、登録した OAuth アプリに割り当てられたクライアントIDの文字列です。
client_secret
は、登録した OAuth アプリに割り当てられたクライアントシークレットの文字列です。
code
は、先ほどのステップで取得した一時コードです。
リクエスト時に、ヘッダーの Accept が Accept: application/json
と指定してリクエストすると、次のような JSON 形式のレスポンスが返ってきます。
{
"access_token": "e72e16c7e42f292c6912e7710c838347ae178b4a",
"scope": "repo, user, gist",
"token_type": "bearer"
}
この access_token
が、OAuthアクセスToken です。これを GitHub API を呼び出す時に、ヘッダに指定すると取得することができます。
参考文献