在GitHub中,当查看我的组织的用户列表时,我能够看到用户是多少个团队的成员。
点击这个计数显示了用户所在的团队,把我放在下面的页面:https://github.com/orgs/my-org/teams?query=%40username
然而,我试图通过GitHub API实现相同的功能,但我一直无法找到一个端点,列出哪些团队(在一个组织内)的用户目前是成员。
一种解决方法是遍历组织中的所有团队并获取其成员列表,但这很快就会超过我的速率限制,因此能够在一个请求中完成此操作将是有用的。
您可以使用GraphQL API v4来过滤组织中具有userLogins
的团队中的用户:
{
organization(login: "my-org") {
teams(first: 100, userLogins: ["johndoe"]) {
totalCount
edges {
node {
name
description
}
}
}
}
}
给出例如:
{
"data": {
"organization": {
"teams": {
"totalCount": 2,
"edges": [
{
"node": {
"name": "Employees",
"description": "org employees"
}
},
{
"node": {
"name": "Developers",
"description": "active developers"
}
}
]
}
}
}
}
来源:platform.github.community forum
不幸的是,GitHub还没有提供这样做的方法。
目前,就像您建议的那样,您必须遍历组织中的每个团队以获取每个团队中的所有成员,然后您需要遍历所有用户,并检查用户是否是这些团队的成员。
如果你使用API令牌,你可以增加你的速率限制,但是如果你有一个大的组织,这个解决方案仍然很糟糕。
小心!提供无效/未知的"用户登录";有时会导致所有团队都返回。
也许我做错了什么,但我开了一张票GH关于这个,所以让我们看看:https://github.community/t/teams-userlogins-filter-is-not-working-as-expected/206251