我在获取和组织私有仓库方面遇到了困难。我正在使用API V3以此方法:http://share.jjnford.com/HhIZ
我正在使用jQuery.getJSON命令并将我的OAuth2访问令牌传递给API URL,但只返回公共仓库。
另外,如果我将私人组织仓库分支到用户帐户(上下文),并拉取用户的仓库,则除了从组织分支的私人仓库之外,所有仓库(公共和私人)都会显示出来。
有人能帮我解决这个问题吗...这是我最后的障碍...
谢谢您提前!
我在获取和组织私有仓库方面遇到了困难。我正在使用API V3以此方法:http://share.jjnford.com/HhIZ
我正在使用jQuery.getJSON命令并将我的OAuth2访问令牌传递给API URL,但只返回公共仓库。
另外,如果我将私人组织仓库分支到用户帐户(上下文),并拉取用户的仓库,则除了从组织分支的私人仓库之外,所有仓库(公共和私人)都会显示出来。
有人能帮我解决这个问题吗...这是我最后的障碍...
谢谢您提前!
我已经找到了问题并进行了更正。根据GitHub API V3文档中的说明,有多个可用的权限范围。看起来“user”权限范围不再有效。一旦我仅使用“repo”权限范围,所有内容都可以正确检索(包括私有组织存储库和私有派生组织存储库)。
我当时找不到正确的答案,也不想请求“repo”范围,因为它对我的应用程序来说太过于臃肿,需要代码读写权限。以下是对我有效的方法(我使用Ruby和octokit gem(https://github.com/octokit/octokit.rb)),特别感谢Github开发支持团队的Ivan:
1.- 在Oauth期间,请求“read:org”范围并从Github获取Oauth 2令牌
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
是的,您肯定需要更多的请求来收集所有可用的存储库,但正如我之前所说,在我的情况下,我不想要求“用户”范围。
注意:是的,用户必须是给定组织内“管理员”团队的成员才能看到私有存储库。