注: 有効期限が切れるユーザー トークンは現在、オプションの機能であり、変更される可能性があります。 ユーザーからサーバーへのトークンの有効期限機能をオプトインまたはオプトアウトするには、「アプリケーションのオプション機能をアクティブにする」を参照してく� さい。 詳細については、「GitHub App のユーザーからサーバーへのアクセストークンの期限切れ」を参照してく� さい。
GitHub App がユーザの代わりに動作すると、ユーザからサーバーに対するリクエストを実行します。 こうしたリクエストは、ユーザのアクセストークンで承認される必要があります。 ユーザからサーバーに対するリクエストには、特定のユーザに対してどのリポジトリを表示するか決定するなど、ユーザに対するデータのリクエストが含まれます。 これらのリクエストには、ビルドの実行など、ユーザがトリガーしたアクションも含まれます。
ユーザからサーバーへのアクセストークンをさらにセキュアにするために、8時間後に期限切れとなるアクセストークンと、新しいアクセストークンと交換できるリフレッシュトークンを使用できます。 詳細については、「ユーザーからサーバーへのアクセス トークンの更新」を参照してく� さい。
サイト上のユーザを特定する
ブラウザーで実行される標準アプリのユーザーを認可するには、Web アプリケーション フローを使用します。
CLI ツールや Git 資� �情� �マネージャーなど、ブラウザーに直接アクセスしないヘッドレス アプリのユーザーを認可するには、デバイス フローを使用します。 デバイス フローでは、OAuth 2.0 デバイス認可付与を使用します。
Web アプリケーションフロー
Web アプリケーションフローを利用して、サイト上のユーザを特定するプロセスは以下の通りです。
- ユーザはGitHubのアイデンティティをリクエストするためにリダイレクトされます
- GitHubによるサイトへのユーザのリダイレクト
- GitHub Appはユーザのアクセストークンで API にアクセスします
アプリを作成または変更するときに [インストール時にユーザーの認可 (OAuth) を要求する] を選択すると、アプリのインストール時に手� � 1 が完了します。 詳細については、「インストール中のユーザーの認可」を参照してく� さい。
1. ユーザーの GitHub ID を要求する
ブラウザで次のURLに移動するようユーザに指示します。
GET http(s)://HOSTNAME/login/oauth/authorize
GitHub アプリで login
パラメーターを指定すると、ユーザーは、使用できるアカウントでサインインしてアプリを認可するように求められます。
パラメーター
名前 | 型 | 説明 |
---|---|---|
client_id | string | 必� �。 GitHub アプリのクライアント ID。 アプリを選択すると、GitHub アプリの設定でこれを確認できます。 注: アプリ ID とクライアント ID は異なり、交換はできません。 |
redirect_uri | string | 認可の後にユーザが送られるアプリケーション中のURL。 これは、GitHub アプリの設定時にコールバック URL として指定したいずれかの URL と完全に一致する必要があり、追� のパラメーターを含めることはできません。 |
state | string | これはフォージェリアタックを防ぐためにランダ� な文字列を含める必要があり、あらゆる任意のデータを含めることができます。 |
login | string | サインインとアプリケーションの認可に使われるアカウントを指示します。 |
allow_signup | string | OAuthフローの間に、認証されていないユーザに対してGitHubへのサインアップの選択肢が提示されるかどうか。 既定値は、true です。 ポリシーでサインアップが禁止されている� �合は、false を使用します。 |
注: 認可要求にスコープを指定する必要はありません。 従来の OAuth とは異なり、認証トークンはGitHub App に紐付けられた権限およびユーザの権限に限定されます。
2. GitHub によってユーザーが元のサイトにリダイレクトされる
ユーザーが要求を受け入れると、GitHub は一時的な code
を code パラメーターに指定し、前の手� �で指定した状態を state
パラメーターに指定して、元のサイトにリダイレクトします。 状態が一致しない� �合、そのリクエストは第三者が作成したものであり、プロセスを中止する必要があります。
注: アプリを作成または変更するときに [インストール時にユーザーの認可 (OAuth) を要求する] を選択すると、GitHub はアクセス トークンとの交換に必要となる一時的な code
を返します。 アプリのインストール時に GitHub が OAuth フローを開始した� �合、state
パラメーターは返されません。
この code
をアクセス トークンと交換します。 トークンの期限設定が有効になっている� �合、アクセストークンは 8 時間で期限切れとなり、リフレッシュトークンは 6 か月で期限切れとなります。 トークンを更新するたびに、新しいリフレッシュトークンを取得します。 詳細については、「ユーザーからサーバーへのアクセス トークンの更新」を参照してく� さい。
ユーザトークンの期限設定は、現在のところオプション機能であり、変更される可能性があります。 ユーザーからサーバーへのトークンの期限設定機能をオプトインするには、「アプリケーションのオプション機能を有効化する」を参照してく� さい。
アクセストークンを受け取るため、次のエンドポイントをリクエストします。
POST http(s)://HOSTNAME/login/oauth/access_token
パラメーター
名前 | 型 | 説明 |
---|---|---|
client_id | string | 必� �。 GitHub アプリのクライアント ID。 |
client_secret | string | 必� �。 GitHub アプリのクライアント シークレット。 |
code | string | 必� �。 手� � 1 に対する応答として受け取ったコード。 |
redirect_uri | string | 認可の後にユーザが送られるアプリケーション中のURL。 これは、GitHub アプリの設定時にコールバック URL として指定したいずれかの URL と完全に一致する必要があり、追� のパラメーターを含めることはできません。 |
[応答]
デフォルトでは、レスポンスは以下の形式になります。 応答パラメーター expires_in
、refresh_token
、refresh_token_expires_in
は、ユーザーからサーバーへのアクセス トークンの期限設定が有効になっている� �合にのみ返されます。
{
"access_token": "ghu_16C7e42F292c6912E7710c838347Ae178B4a",
"expires_in": 28800,
"refresh_token": "ghr_1B4a2e77838347a7E420ce178F2E7c6912E169246c34E1ccbF66C46812d16D5B1A9Dc86A1498",
"refresh_token_expires_in": 15811200,
"scope": "",
"token_type": "bearer"
}
3. GitHub アプリがユーザーのアクセス トークンで API にアクセスする
ユーザのアクセストークンを使用すると、GitHub App がユーザの代わりに API にリクエストを発行できます。
Authorization: Bearer OAUTH-TOKEN
GET http(s)://HOSTNAME/api/v3/user
たとえば、curlでは以下のようにAuthorizationヘッダを設定できます。
curl -H "Authorization: Bearer OAUTH-TOKEN" http(s)://HOSTNAME/api/v3/user
デバイスフロー
注: デバイス フローはパブリック ベータ版であり、変更される可能性があります。
デバイスフローを使えば、CLIツールやGit認証情� �マネージャーなどのヘッドレスアプリケーションのユーザを認可できます。
デバイス フローを使用してユーザーを認可する方法の詳細については、「OAuth アプリの承認」を参照してく� さい。
ユーザがアクセスできるインストールされたリソースの確認
ユーザの OAuth トークンを取得したら、そのユーザがアクセスできるインストールされたアプリケーションを確認できます。
Authorization: Bearer OAUTH-TOKEN
GET /user/installations
また、インストールされたアプリケーションでユーザがアクセスできるリポジトリも確認できます。
Authorization: Bearer OAUTH-TOKEN
GET /user/installations/:installation_id/repositories
詳細については、「ユーザー アクセス トークンでアクセスできるアプリのインストールの一覧表示」および「ユーザー アクセス トークンでアクセスできるリポジトリの一覧表示」を参照してく� さい。
GitHub App の認可の取り消し処理
ユーザーが GitHub アプリの認可を取り消すと、アプリは既定で github_app_authorization
Webhook を受け取ります。 GitHub App は、このイベントをサブスクライブ解除できません。 � れでも、GitHub アカウント設定ページから GitHub アプリの承認を取り消すことができます。 GitHub Appの認可を取り消しても、そのGitHub Appはアンインストールされません。 GitHub Appは、このwebhookを受信したら、トークンを取り返した人の代わりにAPIを呼ぶことを止めるようにプログラ� しなければなりません。 取り消されたアクセス トークンを使い続けると、GitHub App は 401 Bad Credentials
エラーを受け取ることになります。
ユーザレベルの権限
GitHub アプリにユーザー レベルのアクセス許可を追� すると、ユーザー認可フローの一部として個々のユーザーによって付与されるユーザー リソース (ユーザーのメールなど) にアクセスできます。 ユーザー レベルのアクセス許可は、インストール時に組織または個人アカウントで付与されるリポジトリおよび組織レベルのアクセス許可とは異なります。
ユーザー レベルのアクセス許可は、GitHub アプリの設定にある [アクセス許可と Webhook] ページの [ユーザーのアクセス許可] セクションから選択できます。 アクセス許可の選択の詳細については、「GitHub アプリのアクセス許可を編集する」を参照してく� さい。
ユーザが自分のアカウントにアプリケーションをインストールする時、インストールプロンプトは、アプリケーションがリクエストするユーザレベルの権限を一覧表示し、アプリケーションがこれらの権限を個々のユーザに求めることができるということを説明します。
ユーザレベルの権限は個々のユーザに付与されるため、ユーザにアップグレードを促すことなく、既存のアプリケーションに権限を追� できます。 た� し、新しい権限を認可し、ユーザからサーバーに対するトークンを取得するため、ユーザ認可フローを通じて既存のユーザを送信する必要があります。
ユーザからサーバーへのリクエスト
While most of your API インタラクションのほとんどは、サーバーからサーバーへのインストールアクセストークンを用いて行われますが、一部のエンドポイントでは、ユーザアクセストークンを使用し、API 経由でアクションを実行できます。 アプリでは、GraphQL または REST エンドポイントを使用して以下の要求を行うことができます。
対応しているエンドポイント
チェックラン
チェックスイート
行動規範
デプロイメントステータス
デプロイメント
イベント
フィード
Git Blob
Git コミット
Git参照
Gitタグ
Gitツリー
gitignoreテンプレート
インストール
Issueにアサインされた人
Issueコメント
Issueイベント
Issueのタイ� ライン
issue
- 認証されたユーザーに割り当てられたイシューの一覧表示
- 担当者の一覧表示
- ユーザーへの割り当てが可能かどうかの確認
- リポジトリのイシューの一覧表示
- イシューの作成
- イシューの取得
- イシューの更新
- イシューのロック
- イシューのロック解除
ラベル
- イシューのラベルの一覧表示
- イシューへのラベルの追�
- イシューのラベルの設定
- イシューからのすべてのラベルの削除
- イシューからのラベルの削除
- リポジトリのラベルの一覧表示
- ラベルを作成する
- ラベルの取得
- ラベルの更新
- ラベルを削除する
- マイルストーンにおけるすべてのイシューのラベルの取得
ライセンス
Markdown
Meta
マイルストーン
Organizationのフック
- 組織の Webhook の一覧表示
- 組織の Webhook の作成
- 組織の Webhook の取得
- 組織の Webhook の更新
- 組織の Webhook の削除
- 組織の Webhook の ping
Organizationのメンバー
- 組織のメンバーの一覧表示
- ユーザーの組織のメンバーシップの確認
- 組織のメンバーの削除
- ユーザーの組織のメンバーシップの取得
- ユーザーの組織のメンバーシップの設定
- ユーザーの組織のメンバーシップの削除
- パブリック組織のメンバーの一覧表示
- ユーザーのパブリック組織のメンバーシップの確認
- 認証されたユーザーのパブリック組織のメンバーシップの設定
- 認証されたユーザーのパブリック組織のメンバーシップの削除
Organizationの外部コラボレータ
Organization pre-receive フック
OrganizationのTeamのプロジェクト
OrganizationのTeamリポジトリ
Organization Team
- チー� の一覧表示
- チー� を作成する
- 名前によるチー� の取得
- チー� の更新
- チー� の削除
- チー� のメンバーの一覧表示
- ユーザーのチー� のメンバーシップの取得
- ユーザーのチー� のメンバーシップの追� または更新
- ユーザーのチー� のメンバーシップの削除
- 子チー� の一覧表示
- 認証されたユーザーのチー� の一覧表示
組織
- 組織のリストを取得する
- 組織を取得する
- 組織を更新する
- 認証されたユーザーの組織のメンバーシップの一覧表示
- 認証されたユーザーの組織のメンバーシップの取得
- 認証されたユーザーの組織のメンバーシップの更新
- 認証されたユーザーの組織の一覧表示
- ユーザーの組織の一覧表示
プロジェクトのコラボレータ
プロジェクト
- 組織のプロジェクトの一覧表示
- 組織のプロジェクトの作成
- プロジェクトの取得
- プロジェクトの更新
- プロジェクトを削除する
- プロジェクトの列の一覧表示
- プロジェクトの列の作成
- プロジェクトの列の取得
- プロジェクトの列の更新
- プロジェクトの列の削除
- プロジェクト カードの一覧表示
- プロジェクト カードの作成
- プロジェクトの列の移動
- プロジェクト カードの取得
- プロジェクト カードの更新
- プロジェクト カードの削除
- プロジェクト カードの移動
- リポジトリ プロジェクトの一覧表示
- リポジトリ プロジェクトの作成
Pull Requestのコメント
- pull request に関するレビュー コメントの一覧表示
- pull request に関するレビュー コメントの作成
- リポジトリ内のレビュー コメントの一覧表示
- pull request に関するレビュー コメントの取得
- pull request に関するレビュー コメントの更新
- pull request に関するレビュー コメントの削除
Pull Requestのレビューイベント
Pull Requestのレビューのリクエスト
Pull Requestのレビュー
- pull request のレビューの一覧表示
- pull request のレビューの作成
- pull request のレビューの取得
- pull request のレビューの更新
- pull request のレビューに関するコメントの一覧表示
Pulls
- pull request の一覧表示
- pull request を作成する
- pull request の取得
- pull request の更新
- pull request のコミットの一覧表示
- pull request のファイルの一覧表示
- pull request がマージされたかどうかの確認
- pull request のマージ (マージ ボタン)
リアクション
- リアクションの削除
- コミット コメントのリアクションの一覧表示
- コミット コメントのリアクションの作成
- イシューのリアクションの一覧表示
- イシューのリアクションの作成
- イシュー コメントのリアクションの一覧表示
- イシュー コメントのリアクションの作成
- pull request のレビュー コメントのリアクションの一覧表示
- pull request のレビュー コメントのリアクションの作成
- チー� ディスカッション コメントのリアクションの一覧表示
- チー� ディスカッション コメントのリアクションの作成
- チー� ディスカッションのリアクションの一覧表示
- チー� ディスカッションのリアクションの作成
- コミット コメントのリアクションの削除
- イシューのリアクションの削除
- コミット コメントへのリアクションの削除
- pull request コメントのリアクションの削除
- チー� ディスカッションのリアクションの削除
- チー� ディスカッション コメントのリアクションの削除
リポジトリ
- 組織リポジトリの一覧表示
- 認証されたユーザーのリポジトリの作成
- リポジトリの取得
- リポジトリの更新
- リポジトリの削除
- 2 つのコミットの比較
- リポジトリの共同作成者の一覧表示
- フォークの一覧表示
- フォークの作成
- リポジトリの言語の一覧表示
- リポジトリのタグの一覧表示
- リポジトリのチー� の一覧表示
- リポジトリの移譲
- パブリック リポジトリの一覧表示
- 認証されたユーザーのリポジトリの一覧表示
- ユーザーのリポジトリの一覧表示
- リポジトリ テンプレートを使用したリポジトリの作成
リポジトリのアクティビティ
- 星を付けたユーザーの一覧表示
- ウォッチしているユーザーの一覧表示
- ユーザーが星を付けたリポジトリの一覧表示
- 認証されたユーザーによってリポジトリに星が付けられたかどうかの確認
- 認証されたユーザーのリポジトリに星を付ける
- 認証されたユーザーのリポジトリの星を外す
- ユーザーがウォッチしているリポジトリの一覧表示
リポジトリのブランチ
- ブランチの一覧表示
- ブランチの取得
- ブランチの保護の取得
- ブランチの保護の更新
- ブランチの保護の削除
- 管理ブランチの保護の取得
- 管理ブランチの保護の設定
- 管理ブランチの保護の削除
- pull request のレビュー保護の取得
- pull request のレビュー保護の更新
- pull request のレビュー保護の削除
- コミット署名の保護の取得
- コミット署名の保護の作成
- コミット署名の保護の削除
- 状態チェックの保護の取得
- 状態チェックの保護の更新
- 状態チェックの保護の削除
- すべての状態チェックのコンテキストの取得
- 状態チェックのコンテキストの追�
- 状態チェックのコンテキストの設定
- 状態チェックのコンテキストの削除
- アクセス制限の取得
- アクセス制限の削除
- 保護されたブランチへのアクセス権を持つチー� の一覧表示
- チー� のアクセス制限の追�
- チー� のアクセス制限の設定
- チー� のアクセス制限の削除
- 保護されたブランチのユーザー制限の一覧表示
- ユーザーのアクセス制限の追�
- ユーザーのアクセス制限の設定
- ユーザーのアクセス制限の削除
- 分岐をマージする
リポジトリのコラボレータ
リポジトリのコミットコメント
リポジトリのコミット
リポジトリのコミュニティ
リポジトリのコンテンツ
リポジトリのイベントのディスパッチ
リポジトリのフック
- リポジトリの Webhook の一覧表示
- リポジトリの Webhook の作成
- リポジトリの Webhook の取得
- リポジトリの Webhook の更新
- リポジトリの Webhook の削除
- リポジトリの Webhook の ping
- リポジトリへのプッシュの Webhook のテスト
リポジトリの招待
リポジトリのキー
リポジトリのPages
- GitHub Pages サイトの取得
- GitHub Pages サイトの作成
- GitHub Pages サイトに関する情� �の更新
- GitHub Pages サイトの削除
- GitHub Pages のビルドの一覧表示
- GitHub Pages のビルドの要求
- GitHub Pages のビルドの取得
- 最新の Pages のビルドの取得
リポジトリ pre-receive フック
- リポジトリの pre-receive フックの一覧表示
- リポジトリの pre-receive フックの取得
- リポジトリの pre-receive フックの適用の更新
- リポジトリの pre-receive フックの適用の削除
リポジトリのリリース
- リリースを一覧表示する
- リリースを作成する
- リリースの取得
- リリースの更新
- リリースの削除
- リリース アセットの一覧表示
- リリース アセットの取得
- リリース アセットの更新
- リリース アセットの削除
- 最新リリースの取得
- タグ名によるリリースの取得
リポジトリ統計
Root
検索
ステータス
Teamディスカッション
- ディスカッションの一覧表示
- ディスカッションの作成
- ディスカッションの取得
- ディスカッションの更新
- ディスカッションの削除
- ディスカッション コメントの一覧表示
- ディスカッション コメントの作成
- ディスカッション コメントの取得
- ディスカッション コメントの更新
- ディスカッション コメントの削除
トピック
ユーザーの電子メール
ユーザのフォロワー
- ユーザーのフォロワーの一覧表示
- ユーザーがフォローしている人物の一覧表示
- 認証されたユーザーによって特定の人物がフォローされているかどうかの確認
- ユーザーのフォロー
- ユーザーのフォローの解除
- ユーザーが別のユーザーをフォローしているかどうかの確認
ユーザのGPGキー
- 認証されたユーザーの GPG キーの一覧表示
- 認証されたユーザーの GPG キーの作成
- 認証されたユーザーの GPG キーの取得
- 認証されたユーザーの GPG キーの削除
- ユーザーの GPG キーの一覧表示
ユーザの公開鍵
- 認証されたユーザーのパブリック SSH キーの一覧表示
- 認証されたユーザーのパブリック SSH キーの作成
- 認証されたユーザーのパブリック SSH キーの取得
- 認証されたユーザーのパブリック SSH キーの削除
- ユーザーの公開キーの一覧表示