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

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

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

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

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

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


person jjNford    schedule 23.01.2012    source источник


Ответы (2)


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

person jjNford    schedule 24.01.2012
comment
В документе, на который вы ссылаетесь, указано, что «пользователь» является допустимой областью действия. Вы действительно знаете, почему ваши изменения сработали, или вы просто предполагаете, что документы неверны? - person mikemaccana; 20.02.2014

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

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

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

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

person Rogelio Alejandro Ortiz Sevill    schedule 01.09.2015