OAuth AppをGitHub上でセットアップする際には、要求されたスコープが認可フォー� 上でユーザに表示されます。
ノート: GitHub Appを構築しているなら、認可リクエストでスコープを提供する必要はありません。 このことに関する詳細については「GitHub Appのユーザの特定と認可」を参照してく� さい、
CLIツールなど、OAuth Appがブラウザにアクセスできない� �合、アプリケーションを認可するユーザのスコープを指定する必要はありません。 詳しい情� �については「OAuth Appの認可」を参照してく� さい。
どのOAuthスコープを所有しているか、そしてAPIアクションが何を受け付けるかを知るには、ヘッダを確認してく� さい。
$ curl -H "Authorization: token OAUTH-TOKEN" http(s)://[hostname]/api/v3/users/codertocat -I
HTTP/2 200
X-OAuth-Scopes: repo, user
X-Accepted-OAuth-Scopes: user
X-OAuth-Scopes
はトークンが認可したスコープをリストします。X-Accepted-OAuth-Scopes
は、アクションがチェックするスコープをリストします。
利用できるスコープ
名前 | 説明 |
---|---|
(スコープなし) | パブリックな情� �への読み取りのみのアクセスを許可します (ユーザのプロフィール情� �、リポジトリの情� �、Gist) |
site_admin | サイト管理者にGitHub Enterprise Serverの管理APIエンドポイントへのアクセスを許可します。 |
repo | プライベートリポジトリを含め、リポジトリへの完全なアクセスを許可します。 これにはコード、コミットのステータス、リポジトリおよびOrganizationのプロジェクト、招待、コラボレータ、Teamのメンバーシップの追� 、デプロイメントのステータス、リポジトリとOrganizationのためのリポジトリwebhookが含まれます。 また、ユーザプロジェクトを管理する機能も許可します。 |
repo:status | Grants read/write access to commit statuses in public, private, and internal repositories. このスコープが必要になるのは、コードへのアクセスを許可することなく他のユーザあるいはサービスにプライベートリポジトリのコミットステータスへのアクセスを許可したい� �合のみです。 |
repo_deployment | デプロイメントステータス for パブリックおよびプライベートリポジトリへのアクセスを許可します。 このスコープが必要になるのは、コードへのアクセスを許可することなくデプロイメントステータスへのアクセスをユーザまたはサービスに許可する� �合のみです。 |
public_repo | アクセスをパブリックリポジトリのみに制限します。 これには、コード、コミットステータス、リポジトリプロジェクト、コラボレータ、パブリックリポジトリ及びOrganizationのデプロイメントステータスへの読み書きアクセスが含まれます。 パブリックリポジトリにStarを付けるためにも必要です。 |
repo:invite | リポジトリでのコラボレーションへの招待の承認/拒否を許可します。 このスコープが必要になるのは、コードへのアクセスを許可することなく他のユーザまたはサービスに招待へのアクセスを許可する� �合のみです。 |
security_events | code scanning API中のセキュリティイベントへの読み書きアクセスを許可します。 このスコープが必要になるのは、コードへのアクセスを許可することなく他のユーザまたはサービスにセキュリティイベントへのアクセスを許可したい� �合のみです。 |
admin:repo_hook | Grants read, write, ping, and delete access to repository hooks in public, private, or internal repositories. The repo and public_repo scopes grant full access to repositories, including repository hooks. アクセスをリポジトリフックのみに限定するには、admin:repo_hook スコープを使ってく� さい。 |
write:repo_hook | Grants read, write, and ping access to hooks in public, private, or internal repositories. |
read:repo_hook | Grants read and ping access to hooks in public, private, or internal repositories. |
admin:org | OrganizationとそのTeam、プロジェクト、メンバーシップを完全に管理できます。 |
write:org | Organizationのメンバーシップ、Organizationのプロジェクト、Teamのメンバーシップへの読み書きアクセス。 |
read:org | Organizationのメンバーシップ、Organizationのプロジェクト、Teamのメンバーシップへの読み取りのみのアクセス。 |
admin:public_key | 公開鍵を完全に管理できます。 |
write:public_key | 公開鍵の作成、リスト、詳細の表示。 |
read:public_key | 公開鍵のリストと詳細の表示。 |
admin:org_hook | Organizationフックへの読み書き、ping、削除アクセスを許可します。 ノート: OAuthトークンがこれらのアクションを行えるのは、OAuth Appが作成したOrganizationフックに対してのみです。 個人アクセストークンがこれらのアクションを行えるのは、ユーザが作成したOrganizationフックに対してのみです。 |
gist | Gistへの書き込みアクセスを許可します。 |
notifications | 許可するアクセス: ユーザの通知に対する読み取りアクセス スレッドへの既読アクセス リポジトリへのWatch及びWatch解除のアクセス スレッドのサブスクリプションに対する読み書き及び削除アクセス。 |
ユーザ | プロフィール情� �にのみ読み書きアクセスを許可します。 このスコープにはuser:email とuser:follow が含まれることに注意してく� さい。 |
read:user | ユーザのプロフィールデータへの読み取りアクセスを許可します。 |
user:email | ユーザのメールアドレスへの読み取りアクセスを許可します。 |
user:follow | 他のユーザのフォローあるいはフォロー解除のアクセスを許可します。 |
delete_repo | 管理可能なリポジトリの削除アクセスを許可します。 |
write:discussion | Teamのディスカッションの読み書きアクセスを許可します。 |
read:discussion | Team ディスカッションの読み取りアクセスを許可します。 |
admin:gpg_key | GPGキーを完全に管理できます。 |
write:gpg_key | GPGキーの作成、リスト、詳細の表示ができます。 |
read:gpg_key | GPGキーのリストと詳細を表示できます。 |
ワークフロー | GitHub Actionsのワークフローファイルの追� と更新機能を許可します。 同じリポジトリ内の他のブランチに同じファイル(パスと内容が同じ)が存在する� �合、ワークフローファイルはこのスコープがなくてもコミットできます。 ワークフローファイルは、異なるスコープのセットを持ちうるGITHUB_TOKEN を公開できます。 詳しい情� �については、「ワークフローでの認証」を参照してく� さい。 |
ノート:OAuth Appは最初のリダイレクトでスコープをリクエストできます。 スコープは、%20
を使って、空白で区切って複数指定できます。
https://github.com/login/oauth/authorize?
client_id=...&
scope=user%20repo_deployment
リクエストされたスコープと許可されたスコープ
scope
属性は、トークンに添付された、ユーザが許可したスコープをリストします。 通常、これらのスコープはリクエストされたものと同じになります。 しかし、ユーザはスコープを編集でき、実質的にアプリケーションに対して元々リクエストされたよりも少ないアクセス� けを許可できます。 また、ユーザはOAuthフローが完了した後にトークンのスコープを編集することもできます。 この可能性を認識しておき、対応してアプリケーションの動作を調整しなければなりません。
元々リクエストされたよりも少ないアクセスをユーザが許可した� �合のエラーケースを処理することは重要です。 たとえば、アプリケーションはユーザに対し、機能が低下したり、行えないアクションがでてくることを警告したり、知らせたりすることができます。
また、アプリケーションはいつでもユーザをフローに戻して追� の権限を得ようとすることができますが、ユーザは常に拒否できることを忘れないようにしてく� さい。
変更できるトークンのスコープの扱いに関するヒントが提供亜sレテイル、認証の基礎ガイドを参照してく� さい。
正規化されたスコープ
複数のスコープがリクエストされた� �合、トークンは正規化されたスコープのリストとともに保存され、リクエストされた他のスコープに暗黙のうちに含まれているスコープは� �棄されます。 たとえばuser,gist,user:email
をリクエストすると、トークンにはuser
とgist
スコープ� けが含まれます。これは、user:email
スコープで許可されるアクセスはuser
スコープに含まれているためです。