Получение частных репозитов из организации с помощью API GitHub V3
У меня возникли проблемы с получением и организацией частных репозиториев. Я использую API V3 с помощью этого метода: http://share.jjnford.com/HhIZ
Я использую команду jQuery.getJSON и передаю токен доступа OAuth2 к URL-адресу API, но возвращаются только публичные репозитории.
Также, если я создаю репозиторий частной организации для учетной записи пользователя (контекст) и вытаскиваю репозитории пользователей, все репозитории (общедоступные и частные) отображаются, за исключением частного репо, выкованного из организации.
Может кто-нибудь помочь мне с этим... это мое последнее препятствие...
Спасибо заранее!
Ответы
Ответ 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" в рамках данной Организации, чтобы иметь возможность видеть частные репозитории.