GitHub API:获取组织所有成员的电子邮件地址

问题描述 投票:0回答:4

GitHub API 提供了一种获取组织的 members 的方法。我是我组织的管理员/所有者,我想获取所有用户的电子邮件地址。我尝试使用

members
API,但它不返回电子邮件地址。

与我的管理员一起使用 curl

auth-token

GET /orgs/my-org/members

我得到的回复看起来像这样(对于其中一个用户)

"login": "auny",
    "id": some-number,
    "avatar_url": "https://secure.gravatar.com/avatar/6579d09c459f1adad8a60463f47eadd3?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png",
    "gravatar_id": "6579d09c459f1adad8a60463f47eadd3",
    "url": "https://api.github.com/users/auny",
    "html_url": "https://github.com/auny",
    "followers_url": "https://api.github.com/users/auny/followers",
    "following_url": "https://api.github.com/users/auny/following{/other_user}",
    "gists_url": "https://api.github.com/users/auny/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/auny/starred{/owner} 
     {/repo}",
    "subscriptions_url": "https://api.github.com/users/auny/subscriptions",
    "organizations_url": "https://api.github.com/users/auny/orgs",
    "repos_url": "https://api.github.com/users/auny/repos",
    "events_url": "https://api.github.com/users/auny/events{/privacy}",
    "received_events_url": 
    "https://api.github.com/users/auny/received_events",
    "type": "User"

奇怪的是,这包含了大量关于用户的信息,但没有一个重要的信息,即用户的电子邮件地址。作为

admin
我应该能够得到我所有用户的电子邮件地址。

其他user API只返回我自己的电子邮件地址,即请求中使用其

auth-token
的帐户的电子邮件地址。 API 用法:

GET /user/emails

如何实现?有解决办法吗?

api github github-api
4个回答
10
投票

使用 GraphQL API v4,您不必为每个用户调用请求。以下内容将获得组织成员的

email
(如果在公开资料中提供):

{
  organization(login: "my-org") {
    membersWithRole(first: 100) {
      totalCount
      edges {
        node {
          login
          name
          email
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}

在资源管理器中尝试

[edit 08/2020] 使用

membersWithRole
而不是弃用的
members
字段


5
投票

您可以改用 git 存储库!里面有很多有趣的信息。

尝试运行:

git shortlog -s -n -e

您将看到带有电子邮件地址的提交者列表。


3
投票

获取组织成员列表后,使用此API端点获取每个成员的信息:

/users/:user

这将返回您在请求 URL 中指定的用户的电子邮件地址。


0
投票

如果您这样做是为了获取您的身份提供者 (IdP) 使用的电子邮件,即用于 SAML,请参阅 osowskit 的答案

下面的组织示例;但请参阅上面的链接以获取更多信息和企业级身份验证示例:

query {
  organization(login: "LOGIN") {
    samlIdentityProvider {
      ssoUrl
      externalIdentities(first: 100) {
        edges {
          node {
            guid
            samlIdentity {
              nameId
            }
            user {
              login
            }
          }
        }
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.