GitHubのアクセストークン取得方法が分からなくなったので備忘録

# はじめに
もともと仕事でGitHubを使用しています。
随分前(確認したら2021年8月からなんですね)に、認証にアクセストークンが必要になったことは知っていました。
ので、仕事環境の方は対応していたのですが。

今回、自宅PCの方でもGitHubを利用しようとして、もはやすっかりやり方など忘れていたので備忘録を残しておきます。

# Tokenの取得

そもそもどっから取得するのか、すら迷子なわけです。

[個人用アクセス トークンの作成](https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) を確認しながら作業していきます。

なにやらいつの間にか、「Fine-grained personal access tokens」というものが増えていました。
今までの Personal access token よりもきめ細かい設定が可能らしいです。

> きめ細かい個人用アクセス トークンには、個人用アクセス トークン (クラシック) よりもいくつかのセキュリティ上の利点があります。
> 
> - 各トークンは、単一のユーザーまたは組織が所有するリソースにのみアクセスできます。
> - 各トークンは、特定のリポジトリにのみアクセスできます。
> - 各トークンには、個人用アクセス トークン (クラシック) に付与されたスコープよりも詳細な制御を提供する特定のアクセス許可が付与されます。
> - 各トークンには有効期限が必要です。
> - 組織の所有者は、組織内のリソースにアクセスできる詳細な個人用アクセス トークンの承認を要求できます。

なるほど、確かに細かく指定できますね。
せっかくなので、Fine-grained personal access tokens を作成してみます。

## Personal access tokens の生成

何はなくともまずはトークンを生成するところから。
個人用アクセス トークンの作成のページにしたがって進めていきます。

> 1. 任意のページで、右上隅にあるプロファイルの画像をクリックし、次に[設定]をクリックします。

![設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/0de95fbd-fe55-505f-e67b-55c7d563132f.png)

> 2. 左側のサイドバーで、  [開発者向け設定] をクリックします。

![開発者用設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/aa45cc82-51d4-9435-fec8-50c62ae58ef7.png)

> 3. 左側のサイドバーの [ Personal access tokens] の下にある [Fine-grained トークン] をクリックします。

![Fine-grained personal access tokens](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/0da800de-2d5a-12e0-d894-839f5166b9e9.png)

> 4. [新しいトークンの生成] をクリックします。

![Generate new Token](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/17fcaeb8-3a4e-718c-9ae1-db0ac6df4f24.png)

> 5. [トークン名] にトークンの名前を入力します。

![Token Name](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/30443b18-bf5d-e77a-15ae-d3e4d098afa4.png)

> 6. [有効期限] で、トークンの有効期限を選びます。

![有効期限](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/be093c4c-236a-1dfd-ff98-059cb16702e4.png)

デフォルトは30日でした。
今回はデフォルトのままでいこうと思います。

ちなみにカスタムにすると、年月日指定ができるようです。

![有効期限(カスタム)](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/830fdf78-f454-84a9-736f-c991bc621828.png)

> 7. 必要に応じて、 [説明] で、トークンの目的を説明するメモを追加します。

![説明](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/b89dd943-51ee-abc6-29ba-0824934c16d9.png)

> 8. [リソース所有者] で、リソース所有者を選びます。 トークンは、選んだリソース所有者が所有するリソースにのみアクセスできます。 fine-grained personal access token にオプトインしない限り、所属している Organization は表示されません。

![リソース所有者](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/11288a4a-c736-c6ea-eb66-5bacf48942a1.png)

> 9. 必要に応じて、リソース所有者が fine-grained personal access token の承認を要求する Organization である場合、リソース所有者の下にあるボックスに、要求の正当な理由を入力します。

これに関してはリソース所有者が Organization じゃないと表示されないようなので割愛します。

> 10. [リポジトリ アクセス] で、トークンでアクセスするリポジトリを選びます。 ニーズを満たす最小限のリポジトリ アクセスを選ぶ必要があります。 トークンには、GitHub 上のすべてのパブリック リポジトリへの読み取り専用アクセスが常に含まれています。

トークンでアクセスするリポジトリ選択は3種類から選択できるようです。

- パブリックリポジトリへの読み取り専用アクセス
- リソース所有者が所有するすべてのリポジトリ(パブリックリポジトリへの読み取り専用アクセスを含む)
- 選択されたリポジトリのみ(パブリックリポジトリへの読み取り専用アクセスを含む)
        最小1、最大50のリポジトリを選択

今回はとあるリポジトリ用にトークンを生成しようとしているので、「Only select repositories」を選択しておきます。

> 11. 前の手順で [リポジトリの選択のみ] を選んだ場合は、 [選択されたリポジトリ] ドロップダウンで、トークンでアクセスするリポジトリを選びます。

![リポジトリ アクセス](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/99288a58-ced6-d746-4434-e613b0d15537.png)

> 12. [アクセス許可] で、トークンに付与するアクセス許可を選びます。 指定したリソース所有者とリポジトリ アクセスに応じて、リポジトリ、Organization、アカウントのアクセス許可があります。 ニーズに必要な最小限のアクセス許可を選ぶ必要があります。各 REST API 操作に必要なアクセス許可の詳細については、 「[fine-grained personal access token に必要なアクセス許可](https://docs.github.com/ja/rest/overview/permissions-required-for-fine-grained-personal-access-tokens?apiVersion=2022-11-28)」を参照してください。

リポジトリとアカウント、それぞれにアクセス許可を設定できるようです。
アクセス許可について説明してくれているページを確認しながら設定していきたいと思います。

……めっちゃ細かく設定できますね。APIごとに設定できるっぽい。
こりゃあ……ひとまず、さしあたって必要そうなものにだけ権限を振っておきます。

![アクセス許可設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/822adba1-2572-d991-2a82-b2863856eb41.png)

> 13. [トークンの生成] をクリックします。

![トークンの生成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/0c609189-b76d-3e82-1325-da7f6ed694ab.png)

できました～～～～～！

![fine-grained personal access token](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3192344/5eaca541-1898-0a4d-20d2-e9c16d14dea5.png)

## コマンドからトークンを使用する

トークンが用意できたので、さっそく使用していきます。

「リポジトリ アクセス」で選択したリポジトリをクローンします。

```
$ git clone https://github.com/USERNAME/REPO.git
```

クローンしようとすると、サインインを求められます。

ユーザー名には今まで通りユーザー名またはメールアドレスを入力。
パスワードに、さきほど生成したトークンを入力します。

```
Username: YOUR_USERNAME
Password: YOUR_TOKEN
```

これで無事クローン完了！

# さいごに

放っておくとすぐに忘れてしまうので、些細なことでもこまめにメモって大事だなと思う今日この頃。
また同じことに悩んでそうな近い将来の私への備忘録でした。