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

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2022-06-03. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてく� さい。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してく� さい。

ユーザのリソースを調べる

REST APIに対する認証済みリクエストにおいて、アプリケーションがアクセスできるユーザのリポジトリやOrganizationを確実に調べる方法を学びます。

GitHub Enterprise Server APIに対して認証済みのリクエストを行う際には、アプリケーションがカレントユーザのリポジトリやOrganizationをフェッチしなければならないことがしばしばあります。 このガイドでは、これらのリソースを確実に調べる方法について説明します。

GitHub Enterprise Server APIとやりとりをするために、Octokit.rbを使います。 このプロジェクトの完全なソースコードは、platform-samplesリポジトリにあります。

はじめましょう

ま� 「認証の基本」ガイドを読んでいない� �合は、それを読んでから以下の例に取り組んでく� さい。 以下の例は、OAuthアプリケーションを登録済みで、アプリケーションがユーザのOAuthトークンを持っていることを前提としています。

アプリケーションでアクセス可能なユーザのリポジトリを調べる

ユーザは、個人でリポジトリを所有する他に、別のユーザやOrganizationが所有するリポジトリのコラボレータであることもあります。 まとめると、ユーザが権限を持ってアクセスできるリポジトリがあります。それはユーザが読み取りあるいは書き込みアクセスを持つプライベートリポジトリであったり、ユーザが書き込み権限を持つパブリックもしくはインターナルリポジトリであったりします。

アプリがユーザのどのリポジトリにアクセスできるかを決めるのは、OAuthスコープおよびOrganizationのアプリケーションポリシーです。 以下のワークフローを使用して、これらのリポジトリを調べます。

いつものように、まずはGitHubのOctokit.rb Rubyライブラリを読み込む必要があります。 そしてOctokit.rbがページネーションを自動的に処理してくれるよう設定します。

require 'octokit'

Octokit.auto_paginate = true

次に、アプリケーションのユーザに対するOAuthトークンを渡します。

# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!
# Instead, set and test environment variables, like below.
client = Octokit::Client.new :access_token => ENV["OAUTH_ACCESS_TOKEN"]

これで、アクセス可能なユーザのリポジトリをフェッチする準備が整いました。

client.repositories.each do |repository|
  full_name = repository[:full_name]
  has_push_access = repository[:permissions][:push]

  access_type = if has_push_access
                  "write"
                else
                  "read-only"
                end

  puts "User has #{access_type} access to #{full_name}."
end

アプリケーションがアクセス可能なユーザのOrganizationを調べる

アプリケーションは、ユーザに対してOrganizationに関するあらゆるタスクを実行できます。 アプリケーションがタスクを実行するには、必要な権限を持つOAuth認証 が必要です。 たとえば、read:orgスコープではTeamのリストを取得でき、userスコープではユーザのOrganizationに属するメンバーを取得できます。 ユーザがこれらのスコープのうちの1つ以上をアプリケーションに付与すると、ユーザのOrganizationをフェッチする準備が整います。

上記でリポジトリを調べたときと同様に、まずはGitHubのOctokit.rb Rubyライブラリを呼び出し、ページネーションを扱えるようにしましょう。

require 'octokit'

Octokit.auto_paginate = true

次に、アプリケーションのユーザに対するOAuthトークンを渡して、APIクライアントを初期化します。

# !!! DO NOT EVER USE HARD-CODED VALUES IN A REAL APP !!!
# Instead, set and test environment variables, like below.
client = Octokit::Client.new :access_token => ENV["OAUTH_ACCESS_TOKEN"]

これで、アプリケーションがアクセス可能なユーザのOrganizationを取得できます。

client.organizations.each do |organization|
  puts "User belongs to the #{organization[:login]} organization."
end

ユーザのすべてのOrganizationメンバーシップを返す

このドキュメントを端から端まで読ん� 方は、ユーザのパブリックなOrganizationに属するメンバーを取得するAPIメソッドに気付いたかもしれません。 ほとんどのアプリケーションでは、このAPIメソッドを避けるべきです。 このメソッドは、ユーザのパブリックなOrganizationに属するメンバー� けを返し、プライベートなOrganizationに属するメンバーは返しません。

アプリケーションでは通常、アクセスを認可されたすべてのユーザのOrganizationが求められます。 上記のワークフローでは、まさにこれを実行しています。