我需要从组织中删除一个成员,但我只有用户的电子邮件id和组织名称。
我找到的一个解决方案是获取组织的所有成员,找到具有匹配电子邮件的用户,然后使用用户名将该用户从组织中删除。
对这个问题的任何直接的解决方案都是非常感谢的。
发布于 2018-01-24 07:16:43
您可以使用GraphQL API V4获取所有组织成员的公共电子邮件/登录信息:
{
organization(login: "your-org") {
members(first: 100) {
pageInfo {
endCursor
hasNextPage
}
edges {
node {
login
email
}
}
}
}
}然后过滤电子邮件,例如使用curl & jq:
org="your-org"
email="your-mail@gmail.com"
access_token="YOUR_ACCESS_TOKEN"
curl -s -H "Authorization: bearer $access_token" \
-X POST \
-d '{ "query": "query { organization(login: \"'"$org"'\") { members(first: 100) { pageInfo { endCursor hasNextPage } edges { node { login email } } } } }" }' \
https://api.github.com/graphql | \
jq -r --arg email $email '.data.organization.members.edges[] | select(.node.email == $email) | .node.login'在上面的示例中,您需要一个作用域为read:user或user:email的个人访问令牌
然后,可以使用Rest API v3删除成员资格
curl -X DELETE -H "Authorization: Token $access_token" "https://api.github.com/orgs/$org/members/the-user-to-remove"请注意,如果电子邮件在用户的配置文件中不是公开的,则不会找到用户
https://stackoverflow.com/questions/48406255
复制相似问题