2012-01-23 5 views
13

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

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

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

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

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

ответ

3

Я нашел проблему и исправил ее. Согласно используемому GitHub API V3 there are multiple scopes. Похоже, что область «пользователь» больше не действительна. Как только я использовал только область «репо», все было правильно восстановлено (частные репозитории org и частные forked org repos).

+0

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

0

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

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» в рамках данной Организации, чтобы иметь возможность просматривать частные репозитории.

Смежные вопросы