ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

OAuth Appのスコープ

Scopes let you specify exactly what type of access you need. Scopes limit access for OAuth tokens. They do not grant any additional permission beyond that which the user already has.

ここには以下の内容があります:

OAuth AppをGitHub上でセットアップする際には、要求されたスコープが認可フォーム上でユーザに表示されます。

ノート: GitHub Appを構築しているなら、認可リクエストでスコープを提供する必要はありません。 このことに関する詳細については「GitHub Appのユーザの特定と認可」を参照してください、

OAuth Appが CLIツールなどであり、ブラウザにアクセスできないなら、アプリケーションの認可のためにユーザに対してスコープを指定する必要はありません。 詳しい情報については「OAuth Appの認可」を参照してください。

どのOAuthスコープを所有しているか、そしてAPIアクションが何を受け付けるかを知るには、ヘッダを確認してください。

$ curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com/users/codertocat -I
HTTP/1.1 200 OK
X-OAuth-Scopes: repo, user
X-Accepted-OAuth-Scopes: user
  • X-OAuth-Scopesはトークンが認可したスコープをリストします。
  • X-Accepted-OAuth-Scopesは、アクションがチェックするスコープをリストします。

利用できるスコープ

名前説明
(スコープなし)Grants read-only access to public information (including user profile info, repository info, and gists)
repoGrants full access to repositories, including private repositories. That includes read/write access to code, commit statuses, repository and organization projects, invitations, collaborators, adding team memberships, deployment statuses, and repository webhooks for repositories and organizations. また、ユーザプロジェクトを管理する機能も許可します。
repo:statusGrants read/write access to public and private repository commit statuses. このスコープが必要になるのは、コードへのアクセスを許可することなく他のユーザあるいはサービスにプライベートリポジトリのコミットステータスへのアクセスを許可したい場合のみです。
repo_deploymentGrants access to deployment statuses for public and private repositories. This scope is only necessary to grant other users or services access to deployment statuses, without granting access to the code.
public_repoアクセスをパブリックリポジトリのみに制限します。 これには、コード、コミットステータス、リポジトリプロジェクト、コラボレータ、パブリックリポジトリ及びOrganizationのデプロイメントステータスへの読み書きアクセスが含まれます。 Also required for starring public repositories.
repo:inviteリポジトリでのコラボレーションへの招待の承認/拒否を許可します。 このスコープが必要になるのは、コードへのアクセスを許可することなく招待へのアクセスをユーザあるいはサービスに許可する場合のみです。
security_events以下のアクセスを許可します。
code scanning API中のセキュリティイベントへの読み取りおよび書き込みアクセス
secret scanning API中のセキュリティイベントへの読み取りおよび書き込みアクセス
このスコープが必要になるのは、コードへのアクセスを許可することなく他のユーザまたはサービスにセキュリティイベントへのアクセスを許可したい場合のみです。
admin:repo_hookGrants read, write, ping, and delete access to repository hooks in public and private repositories. The repo and public_repo scopes grant full access to repositories, including repository hooks. アクセスをリポジトリフックのみに限定するには、admin:repo_hookスコープを使ってください。
write:repo_hookGrants read, write, and ping access to hooks in public or private repositories.
read:repo_hookGrants read and ping access to hooks in public or private repositories.
admin:orgOrganizationとそのTeam、プロジェクト、メンバーシップを完全に管理できます。
write:orgOrganizationのメンバーシップ、Organizationのプロジェクト、Teamのメンバーシップへの読み書きアクセス。
read:orgOrganizationのメンバーシップ、Organizationのプロジェクト、Teamのメンバーシップへの読み取りのみのアクセス。
admin:public_key公開鍵を完全に管理できます。
write:public_key公開鍵の作成、リスト、詳細の表示。
read:public_key公開鍵のリストと詳細の表示。
admin:org_hookOrganizationフックへの読み書き、ping、削除アクセスを許可します。 ノート: OAuthトークンがこれらのアクションを行えるのは、OAuth Appが作成したOrganizationフックに対してのみです。 個人アクセストークンがこれらのアクションを行えるのは、ユーザが作成したOrganizationフックに対してのみです。
gistGistへの書き込みアクセスを許可します。
notifications許可するアクセス:
ユーザの通知に対する読み取りアクセス
スレッドへの既読アクセス
リポジトリへのWatch及びWatch解除のアクセス
スレッドのサブスクリプションに対する読み書き及び削除アクセス。
ユーザプロフィール情報にのみ読み書きアクセスを許可します。 このスコープにはuser:emailuser:followが含まれることに注意してください。
read:userユーザのプロフィールデータへの読み取りアクセスを許可します。
user:emailユーザのメールアドレスへの読み取りアクセスを許可します。
user:follow他のユーザのフォローあるいはフォロー解除のアクセスを許可します。
delete_repo管理可能なリポジトリの削除アクセスを許可します。
write:discussionTeamのディスカッションの読み書きアクセスを許可します。
read:discussionAllows read access for team discussions.
write:packagesGitHub Packagesでのパッケージのアップロードあるいは公開のアクセスを許可します。 詳しい情報については「パッケージの公開」を参照してください。
read:packagesGitHub Packagesからのパッケージのダウンロードあるいはインストールのアクセスを許可します。 詳しい情報については「パッケージのインストール」を参照してください。
delete:packagesGitHub Packagesからのパッケージの削除アクセスを許可します。 For more information, see "Deleting and restoring a package."
admin:gpg_keyGPGキーを完全に管理できます。
write:gpg_keyGPGキーの作成、リスト、詳細の表示ができます。
read:gpg_keyGPGキーのリストと詳細の表示ができます。
ワークフローGitHub Actionsのワークフローファイルの追加と更新機能を許可します。 同じリポジトリ内の他のブランチに同じファイル(パスと内容が同じ)が存在する場合、ワークフローファイルはこのスコープがなくてもコミットできます。 ワークフローファイルは異なるスコープのセットを持ちうるGITHUB_TOKENを公開できます。詳細については https://docs.github.com/en/free-pro-team@latest/actions/reference/authentication-in-a-workflow#permissions-for-the-github_token を参照してください。

ノート:OAuth Appは最初のリダイレクトでスコープをリクエストできます。 You can specify multiple scopes by separating them with a space using %20:

https://github.com/login/oauth/authorize?
  client_id=...&
  scope=user%20repo_deployment

リクエストされたスコープと許可されたスコープ

scope属性は、トークンに添付された、ユーザが許可したスコープをリストします。 通常、これらのスコープはリクエストされたものと同じになります。 しかし、ユーザはスコープを編集でき、実質的にアプリケーションに対して元々リクエストされたよりも少ないアクセスだけを許可できます。 また、ユーザはOAuthフローが完了した後にトークンのスコープを編集することもできます。 この可能性を認識しておき、対応してアプリケーションの動作を調整しなければなりません。

元々リクエストされたよりも少ないアクセスをユーザが許可した場合のエラーケースを処理することは重要です。 たとえば、アプリケーションはユーザに対し、機能が低下したり、行えないアクションがでてくることを警告したり、知らせたりすることができます。

また、アプリケーションはいつでもユーザをフローに戻して追加の権限を得ようとすることができますが、ユーザは常に拒否できることを忘れないようにしてください。

変更できるトークンのスコープの扱いに関するヒントが提供亜sレテイル、認証の基礎ガイドを参照してください。

正規化されたスコープ

複数のスコープがリクエストされた場合、トークンは正規化されたスコープのリストとともに保存され、リクエストされた他のスコープに暗黙のうちに含まれているスコープは破棄されます。 たとえばuser,gist,user:emailをリクエストすると、トークンにはusergistスコープだけが含まれます。これは、user:emailスコープで許可されるアクセスはuserスコープに含まれているためです。

Did this doc help you?

Privacy policy

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.