如何使用github rest api通过电子邮件找到用户名?

时间:2018-01-23 16:15:19

标签: github-api

我需要从组织中删除某个成员,但我只有该用户的电子邮件ID和组织名称。

我找到的一个解决方案是获取组织的所有成员,找到匹配电子邮件的用户,然后使用用户名从组织中删除该用户。

非常感谢任何直接解决此问题的方法。

1 个答案:

答案 0 :(得分:0)

您可以使用GraphQL API V4

获取所有组织成员的公共电子邮件/登录信息
{
  organization(login: "your-org") {
    members(first: 100) {
      pageInfo {
        endCursor
        hasNextPage
      }
      edges {
        node {
          login
          email
        }
      }
    }
  }
}

然后过滤电子邮件,例如使用&

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:useruser:email

的个人访问令牌

然后,您可以使用Rest API v3

删除成员资格
curl -X DELETE -H "Authorization: Token $access_token" "https://api.github.com/orgs/$org/members/the-user-to-remove"

请注意,如果用户的个人资料中没有公开电子邮件,则无法找到该用户