3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GitHub】GitHub の OAuth Tokenの取得方法

Posted at

GitHub の OAuth Token とは?

GitHub API を使って GitHub 上の情報を取得するには、GitHub上で発行されるアクセストークンが必要です。
なくても問題はないのですが、取得数が1時間に60回と制限されてしまいます。

アクセストークンには以下の3つがあります。

  • OAuth Access Token
  • Personal Access Token

手順

大まかな手順は以下の通りです。

  1. OAuthの設定をする:この時、**Client ID ** と Client Secret を取得します
  2. GitHub ログイン画面に遷移
  3. 一時コードを取得する
  4. POSTリクエストしてアクセストークンを取得する

詳細

OAuth の設定

まず、GitHubの設定画面に移動します。
スクリーンショット 2024-03-31 14.29.37.png

その中の Developer settings へ移動します。

スクリーンショット 2024-03-31 14.30.58.png

その中に、以下の3つがあるはずです(2024年4月現在)

  • GitHub Apps
  • OAuth Apps
  • Personal access tokens

今回は OAuth Apps を選択します。

スクリーンショット 2024-03-31 14.35.08.png

OAuth App を新規登録します。New OAuth App をクリックします。

スクリーンショット 2024-03-31 14.35.27.png

以下に必要事項を記入していきます。
スクリーンショット 2024-03-31 14.36.55.png

記載したら Register application をクリックします。
この時に、Client IDClient secrets を取得するので、どこかに一旦メモったほうが良いです。

これで、OAuth の設定をすることができました。

GitHub ログイン画面に遷移

以下のアドレスで GitHub のログインページにジャンプします。

https://github.com/login/oauth/authorize?client_id=XXX&scope=YYY`

XXXに先ほど取得した Client IDを入れます。
YYYは、パラメータに取得したい情報のスコープを指定します。(repousergist など)

スコープの詳細については↓を参照ください。

一時コードを取得する

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 を呼び出す時に、ヘッダに指定すると取得することができます。

参考文献

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?