ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。
GitHub AEは、現在限定リリース中です。詳細については営業チームにお問い合わせください。

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

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

When making authenticated requests to the GitHub AE API, applications often need to fetch the current user's repositories and organizations. このガイドでは、これらのリソースを確実に調べる方法について説明します。

To interact with the GitHub AE API, we'll be using 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 an internal 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

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

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

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

このドキュメントは役立ちましたか?

プライバシーポリシー

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?