OAuth AppをGitHub上でセットアップする際には、要求されたスコープが認可フォー� 上でユーザに表示されます。
注: GitHub App を構築している� �合は、認可要求でスコープを指定する必要はありません。 詳しくは、「GitHub App のユーザーの特定と認可」をご覧く� さい。
CLIツールなど、OAuth Appがブラウザにアクセスできない� �合、アプリケーションを認可するユーザのスコープを指定する必要はありません。 詳しくは、「OAuth App の認可」をご覧く� さい。
どのOAuthスコープを所有しているか、そしてAPIアクションが何を受け付けるかを知るには、ヘッダを確認してく� さい。
$ curl -H "Authorization: Bearer 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
には、アクションがチェックするスコープが一覧表示されます。
利用可能なスコープ
名前|説明-----|-----------| (no scope)
|パブリック情� � (ユーザー プロファイル情� �、リポジトリ情� �、gists を含む) site_admin
への読み取り専用アクセスを許可|サイト管理者に GitHub Enterprise Server 管理 API エンドポイントへのアクセスを許可します。 repo
|public、internal、、プライベート リポジトリへのフル アクセスを許可します。これには、コードへの読み取りと書き込みのアクセス、コミットの状態、リポジトリへの招待、コラボレーター、デプロイの状態、リポジトリ Webhook が含まれます。 注: repo
スコープでは、リポジトリ関連のリソースに� えて、Organization 所有のリソース (プロジェクト、招待、Team メンバーシップ、Webhook) を管理するためのアクセスも許可されます。 さらに、ユーザー所有のプロジェクトを管理する権限も許可されます。
repo:status
| パブリック、プライベート、内部リポジトリのコミット ステータスに対する読み取り/書き込みアクセスを許可します。 このスコープは、コードへのアクセスを許可 せずに、他のユーザーまたはサービスにプライベート リポジトリコミットステータスへのアクセス権を付与する� �合にのみ必要です。
repo_deployment
| パブリックおよびプライベート リポジトリのデプロイ ステータスに対するアクセスを許可します。 このスコープは、コードへのアクセスを許可 せずに、展開状態へのアクセス権を他のユーザーまたはサービスに付与する� �合にのみ必要です。 public_repo
|パブリック リポジトリへのアクセスを制限します。 これには、コード、コミットステータス、リポジトリプロジェクト、コラボレータ、パブリックリポジトリ及びOrganizationのデプロイメントステータスへの読み書きアクセスが含まれます。 パブリック リポジトリにスターを付けるためにも必要です。 repo:invite
| リポジトリにおける共同作業への招待の承諾/拒否権限を付与します。 このスコープは、コードへのアクセスを許可 せずに、他のユーザーまたはサービスに招待へのアクセス権を付与する� �合にのみ必要です。 security_events
|補助 金:
code scanning API でのセキュリティ イベントに対する読み取りおよび書き込みアクセス
このスコープは、コードへのアクセスを許可 せずに、他のユーザーまたはサービスにセキュリティ イベントへのアクセス権を付与する� �合にのみ必要です。 admin:repo_hook
|public、private、または internal リポジトリのリポジトリ フックへの読み取り、書き込み、ping、および削除アクセスを許可します。 repo
および public_repo
スコープは、リポジトリ フックを含む、リポジトリに対する完全なアクセスを許可します。 アクセスをリポジトリ フックのみに限定するには、admin:repo_hook
スコープを使用してく� さい。
write:repo_hook
| パブリック、プライベート、または内部リポジトリのフックに対する読み取り、書き込み、ping アクセスを許可します。
read:repo_hook
| パブリック、プライベート、または内部リポジトリのフックに対する読み取りおよび ping アクセスを許可します。
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 フックに対してのみです。 Personal access token がこれらのアクションを実行できるのは、ユーザーが作成した組織のフックに対してのみです。
gist
| gist に対する書き込みアクセスを許可します。
notifications
| 以下を許可します:
ユーザーの通知に対する読み取りアクセス
スレッドに対する既読としてマーク アクセス
リポジトリに対するウォッチおよびウォッチ解除アクセス
スレッドのサブスクリプションに対する読み取り、書き込み、削除アクセス。
user
| プロフィール情� �のみに対する読み取り/書き込みアクセスを許可します。 このスコープには user:email
と user:follow
が含まれることにご注意く� さい。
read:user
| ユーザーのプロフィール データに対する読み取りアクセスを許可します。
user:email
| ユーザーのメール アドレスに対する読み取りアクセスを許可します。
user:follow
| 他のユーザーをフォローまたはフォロー解除するためのアクセスを許可します。 delete_repo
| 管理可能なリポジトリを削除するためのアクセスを許可します。
write:discussion
| Team のディスカッションの読み取りおよび書き込みアクセスを許可します。
read:discussion
| Team のディスカッションの読み取りアクセスを許可します。
write:packages
| GitHub Packages でパッケージをアップロードまたは公開するためのアクセスを許可します。 詳しくは、「パッケージを公開する」をご覧く� さい。
read:packages
| GitHub Packages からパッケージをダウンロードまたはインストールするためのアクセスを許可します。 詳しくは、「パッケージのインストール」をご覧く� さい。
delete:packages
| GitHub Packages からパッケージを削除するアクセス権を付与します。 詳しくは、「パッケージを削除および復元する」をご覧く� さい。
admin:gpg_key
| GPG キーを完全に管理できます。
write:gpg_key
| GPG キーの作成、一覧表示、詳細の表示ができます。
read:gpg_key
| GPG キーの一覧表示と詳細の表示ができます。 workflow
| GitHub Actions のワークフロー ファイルの追� および更新権限を付与します。 同じリポジトリ内の他のブランチに同じファイル(パスと内容が同じ)が存在する� �合、ワークフローファイルはこのスコープがなくてもコミットできます。 ワークフロー ファイルは、スコープのセットが異なる可能性がある GITHUB_TOKEN
を公開する� �合があります。 詳しくは、ワークフローでの認証に関するページを参照してく� さい。 admin:enterprise
| エンタープライズ機能の完全な制御権を付与する。 詳しくは、GraphQL API ドキュメントにある「Enterprise アカウントの管理」を参照してく� さい。manage_runners:enterprise
および read:enterprise
を含めます。 manage_runners:enterprise
| Enterprise 内のセルフホステッド ランナーに対する完全な制御権を付与する。 詳細については、セルフホステッド ランナーに関する記述をご覧く� さい。 read:enterprise
| Enterprise プロファイルのすべてのデータを読み取る。 エンタープライズ メンバーまたは組織のプロファイル データは含まれません。
注: OAuth App は最初のリダイレクトでスコープを要求できます。 複数のスコープを指定するには、スコープを空白で区切ります (%20
を使用)。
https://github.com/login/oauth/authorize?
client_id=...&
scope=user%20repo_deployment
リクエストされたスコープと許可されたスコープ
scope
属性は、トークンに付随する、ユーザーによって許可されたスコープを一覧表示します。 通常、これらのスコープはリクエストされたものと同じになります。
しかし、ユーザーはスコープを編集して、実質的には元々要求されたアクセスよりも少ないアクセスをアプリケーションに対して許可できます。 また、ユーザーは OAuth フローが完了した後にトークンのスコープを編集することもできます。
この可能性を認識しておき、それに応じたアプリケーションの動作の調整が必要になります。
元々要求されたアクセスよりも少ないアクセスをユーザーが許可した� �合のエラー ケースを処理することが重要です。 たとえば、アプリケーションはユーザーに対して、機能の低下や一部のアクションが実行できないことを警告したり、知らせたりすることができます。
また、アプリケーションはいつでもユーザーをもう一度フローに戻して追� の権限を得ようとすることができますが、ユーザーは常に拒否できることを忘れないようにしてく� さい。
変更できるトークンのスコープの扱いに関するヒントが提供されている認証の基本ガイドをご確認く� さい。
正規化されたスコープ
複数のスコープが要求された� �合、トークンは正規化されたスコープのリストとともに保存され、要求された別のスコープに暗黙的に含まれているスコープは� �棄されます。 たとえば user,gist,user:email
を要求すると、トークンには user
と gist
スコープのみが含まれます。これは、user:email
スコープで許可されるアクセスは user
スコープに含まれているからです。