Получение частных репо от организации с помощью GitHub API V3 - PullRequest
13 голосов
/ 23 января 2012

У меня проблемы с получением и организацией частных репо.Я использую API V3 с этим методом: http://share.jjnford.com/HhIZ

Я использую команду jQuery.getJSON и передаю свой токен доступа OAuth2 на URL-адрес API, но получаю только публичные репозитории.

Также, если я подключу хранилище частной организации к учетной записи пользователя (контексту) и извлечу хранилища пользователей, все репозитории (общедоступные и закрытые) будут отображаться, кроме частного репо, разветвленного организацией.

Может ли кто-нибудь мне помочь?с этим ... это мое последнее препятствие ...

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 24 января 2012

Я нашел проблему и исправил ее. В соответствии с GitHub API V3 существует несколько областей действия , которые можно использовать. Кажется, область действия «пользователь» больше не действительна. После того, как я использовал только область «репо», все было восстановлено правильно (частные репозитории org и приватные разветвленные репозитории org).

0 голосов
/ 01 сентября 2015

В то время я не мог найти правильный ответ на этот вопрос, и я не хочу просить область «репо», поскольку это слишком излишне для моего приложения, оно запрашивает разрешения на чтение / запись кода. Вот что сработало для меня (я использую Ruby вместе с гемом octokit (https://github.com/octokit/octokit.rb)), особая благодарность Ивану из поддержки github dev:

1.- Во время Oauth попросите область «read: org» и получите токен Oauth 2 от Github

2.- инициализировать клиент octokit:

client = Octokit::Client.new(access_token: my_oauth2_token)

3.- Извлечение организаций пользователя, мы можем сделать это из-за области действия «read: org»

organizations = client.organizations

4.- Для каждой организации найдите группу администратора Github, к которой принадлежит этот пользователь. А затем используйте эту команду, чтобы получить доступные репозитории

organizations.each do |organization|
    admin_team = client.organization_teams(organization[:id]).select { |repo| repo[:permission] == 'admin' }.first
    org_repos << client.team_repositories(admin_team[:id])
end

Да, вам определенно потребуются дополнительные запросы для сбора всех доступных репозиториев, но, как я уже говорил, в моем случае я не хотел запрашивать область действия "пользователя".

Примечание. Да, пользователь должен быть членом группы «администратор» в рамках данной Организации, чтобы иметь возможность просматривать частные репозитории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...