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
如何实现?有解决办法吗?
使用 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
字段
您可以改用 git 存储库!里面有很多有趣的信息。
尝试运行:
git shortlog -s -n -e
您将看到带有电子邮件地址的提交者列表。
如果您这样做是为了获取您的身份提供者 (IdP) 使用的电子邮件,即用于 SAML,请参阅 osowskit 的答案。
下面的组织示例;但请参阅上面的链接以获取更多信息和企业级身份验证示例:
query {
organization(login: "LOGIN") {
samlIdentityProvider {
ssoUrl
externalIdentities(first: 100) {
edges {
node {
guid
samlIdentity {
nameId
}
user {
login
}
}
}
}
}
}
}