Подтвердить что ты не робот

Получение частных репозитов из организации с помощью API GitHub V3

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

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

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

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

Спасибо заранее!

4b9b3361

Ответ 1

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

Ответ 2

Я не мог найти правильный ответ для этого в то время, и я не хочу запрашивать область "репо", поскольку она слишком перегружена для моего приложения, она запрашивает чтение/запись данных permssions. Вот что сработало для меня (я использую Ruby вместе с драгоценным камнем октокита (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

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

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