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条数据,你可以通过page和per_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




