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

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

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

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

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

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

はじめましょう

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

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

ユーザは、個人でリポジトリを所有する他に、別のユーザやOrganizationが所有するリポジトリのコラボレータであることもあります。 Collectively, these are the repositories where the user has privileged access: either it's a private repository where the user has read or write access, or it's a public repository where the user has write access.

アプリがユーザのどのリポジトリにアクセスできるかを決めるのは、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

Return all of the user's organization memberships

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

As an application, you typically want all of the user's organizations that your app is authorized to access. 上記のワークフローでは、まさにこれを実行しています。

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.