You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

GitHub API获取组织成员疑问:curl仅返回5条数据且翻页为空

嘿,这个问题我之前踩过坑,给你捋清楚来龙去脉和解决办法:

问题原因与解决办法

1. 「人员」和「成员」的概念差异

GitHub网站的「人员」页面和API的members接口返回的内容确实不一样:

  • 网站的人员标签下包含两类角色:
    • 组织成员:直接加入该组织的用户(包括把成员身份设为私密的)
    • 外部协作者:被邀请到组织内特定仓库,但没有正式加入组织的用户
  • 而未认证调用/orgs/:org/members接口时,默认只会返回该组织的公开成员(也就是用户主动将自己在该组织的成员身份设为公开的账号),这就是你只拿到5条数据的核心原因——剩下的成员要么是私密身份,要么是外部协作者,未认证状态下API不会返回。

2. 翻页返回空数组的原因

因为第一页已经返回了所有符合「未认证+公开成员」条件的用户,所以第二页自然没有数据。要获取更多成员,必须先解决认证问题。

3. 获取所有成员的操作步骤

步骤1:生成带权限的个人访问令牌(PAT)

在GitHub账号里生成一个PAT,需要勾选read:org权限(只读场景下这个权限就足够)。

步骤2:认证调用API

用生成的PAT发起请求,这样就能获取到你有权限查看的所有组织成员(包括私密身份的):

curl -H "Authorization: token YOUR_PERSONAL_ACCESS_TOKEN" https://api.github.com/orgs/:org/members

步骤3:处理分页

GitHub API默认每页返回30条数据,你可以通过pageper_page参数分页获取(per_page最大支持100),比如获取第二页数据:

curl -H "Authorization: token YOUR_PERSONAL_ACCESS_TOKEN" https://api.github.com/orgs/:org/members?page=2&per_page=100

步骤4:获取外部协作者(如果需要)

如果要和网站「人员」页面内容完全一致,还需要调用外部协作者接口获取这部分用户,然后合并两个接口的结果:

curl -H "Authorization: token YOUR_PERSONAL_ACCESS_TOKEN" https://api.github.com/orgs/:org/outside_collaborators

内容的提问来源于stack exchange,提问作者The Walrus

火山引擎 最新活动