2012-01-23 10 views
13

Tengo problemas para obtener y organizar repositorios privados. Estoy usando API V3 con este método: http://share.jjnford.com/HhIZObteniendo depósitos privados de la organización con GitHub API V3

Estoy utilizando el comando jQuery.getJSON y pasando mi token de acceso OAuth2 a la URL de la API, pero solo estoy obteniendo devoluciones de repositorios públicos.

También si me tenedor un repositorio organización privada a una cuenta de usuario (contexto) y tire de los repositorios de usuarios en todos los repositorios (público & privada) mostrará excepto el repositorio privado en forma de horquilla de una organización.

¿Alguien puede ayudarme con esto ... es mi último obstáculo ...

Gracias de antemano!

Respuesta

3

He encontrado el problema y lo he corregido. De acuerdo con el GitHub API V3 there are multiple scopes que se puede utilizar. Parece que el alcance del "usuario" ya no es válido. Una vez que utilicé solo el ámbito de "repo", todo se recuperó correctamente (repositorio de entidades privadas y reposes organizados bifurcados).

+0

El documento al que está vinculando dice 'usuario' es un alcance válido. ¿Sabes realmente por qué funcionaron tus cambios o simplemente adivinas que los documentos están equivocados? – mikemaccana

0

No pude encontrar una respuesta correcta para esto en ese momento, y no quiero pedir el alcance "repo", ya que es demasiado exagerado para mi aplicación, se le pide código de lectura/escritura permssions. Esto es lo que funcionó para mí (estoy usando Ruby junto con la gema octokit (https://github.com/octokit/octokit.rb)), gracias especiales a Ivan desde el soporte github dev:

1.- Durante Oauth, solicite el alcance "read: org" y obtener el token de OAuth 2 de Github

2.- inicializar el cliente de octokit:

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

3.- Recuperar organizaciones del usuario, podemos hacerlo a causa de la "lectura: org" ámbito

organizations = client.organizations 

4.- Para cada organización, recupere un equipo de administración de Github al que pertenece este usuario. Y luego, utilizar este equipo para recuperar los repositorios disponibles

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 

Sí, que sin duda necesita más solicitudes para reunir todos los repositorios disponibles, pero como he dicho antes, en mi caso, yo no quería que pedir el alcance "usuario".

Nota: Sí, el usuario debe ser miembro de un equipo "administrador" dentro de una organización determinada para poder ver los repositorios privados.

Cuestiones relacionadas