56

我正在尝试获取组织所有存储库的列表,包括私有存储库。(或者更具体地说,某个用户有权访问的所有私有存储库。)

请求组织 ( https://api.github.com/orgs/acme?access_token=[...]) 的信息表明确实有很多私有存储库:

...
"public_repos": 5,
"total_private_repos": 68, 
"owned_private_repos": 68, 
...

(我使用的访问令牌之前是使用用户名/密码的 API 生成的。)

但无论我试图列出回购...

https://api.github.com/orgs/acme/repos?access_token=[...]   

...GitHub API 只返回 5 个公共存储库。(文档说 type=all是默认的。还尝试添加参数type=private;没有区别。)

知道我做错了什么吗?

生成访问令牌的用户实际上对组织的一些私有存储库具有 Push & Pull 访问权限,但这些都没有出现在我获得的列表中(只有 5 个公共存储库)。

4

7 回答 7

30

你所做的一切都很好。但是,在为身份验证创建 OAuth 令牌时,请确保您定义了正确的范围。每个范围都定义了一组特定的允许操作(您可以读/写的信息),因此您应该检查您是否正在使用repo范围创建令牌。

于 2013-06-11T08:32:50.723 回答
8

您的网址需要一个 ? 不是 &。应该是这样的:

https://api.github.com/orgs/acme/repos?access_token=your_access_token

于 2019-07-26T03:13:53.953 回答
4

还应注意,如果您从组织访问私有存储库,则 OAuth 应用程序需要根据设置由所有者授权。

https://help.github.com/articles/authorizing-oauth-apps/

对于具有 OAuth 应用程序访问限制的组织,您可以请求组织管理员批准在该组织中使用的应用程序。如果组织不批准该应用程序,则该应用程序将只能访问该组织的公共资源。如果您是组织管理员,您可以自己批准申请。

对于没有 OAuth 应用程序访问限制的组织,应用程序将自动被授权访问该组织的资源。因此,您应该注意您批准哪些 OAuth 应用程序可以访问您的个人帐户资源以及任何组织资源。

于 2018-10-11T05:16:16.097 回答
2
username = "Your_org"
token = "your_TOKEN"
request = requests.get('https://api.github.com/orgs/'+username+'/repos?per_page=1000', auth=(username, token))
于 2020-09-03T09:08:53.570 回答
1
# Get Github Repo Names

"""
>>>> pip install PyGithub
>>>> Reference Link: https://pypi.org/project/PyGithub/
>>>> Getting the access token.
        Go to github <settings>.
        Go to <Developer Settings>.
        Go to <Personal access tokens>.
        Click on <Generate new token> button.
        Add a note.
        Check all the setting in that page.
        Click on <Generate token> button.
        Copy  the access token and paste in below code.

>>>>
>>>>
>>>>
>>>>
"""

from github import Github

access_token = ''
g = Github(access_token)
repo_list = [i for i in g.get_user().get_repos()]
for i in repo_list:
    repo_name = str(i).replace('Repository(full_name="', '')
    repo_name = str(repo_name).replace('")', '')
    print('https://www.github.com/' + repo_name)
于 2021-02-09T20:36:13.027 回答
0

我最近有同样的症状,但我的原因不同。我注册了一个 GitHub 应用程序,而不是一个 OAuth 应用程序,但并没有真正意识到其中的区别。要让 GitHub 应用程序列出来自组织的私有存储库,必须为该组织安装该应用程序,并获得用户授权。否则,您只会列出公共回购。

于 2021-10-27T11:35:35.937 回答
0

您可以使用 gh 命令https://cli.github.com/

gh repo list <org name> -L <total number of repos> --json sshUrl -q .[].sshUrl

要查看 json 字段列表,请运行gh repo list --json help. 如果您只想查看公共或私人回购,那么您可以使用这些标志

FLAGS
      --archived          Show only archived repositories
      --no-archived       Omit archived repositories
      --private           Show only private repositories
      --public            Show only public repositories
于 2022-01-26T14:49:06.200 回答