2013-06-25 96 views
8

GitHub API提供了一種獲取組織的members的方法。我是我的組織的管理員/所有者,我希望獲得所有用戶的電子郵件地址。我嘗試了members API,但它不返回電子郵件地址。GitHub 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 

這怎麼能實現?有沒有辦法解決它?

回答

1

獲取組織成員名單後,獲取信息使用this API endpoint每個成員:

/users/:user 

這將返回您在您的請求URL指定的用戶的電子郵件地址。

+1

此端點返回'email'場僅針對特定的用戶,並且也被設置成'null' 。然而,對於大多數用戶而言,「email」字段甚至不存在。這可能與用戶如何配置帳戶有關嗎? – auny

+0

是的,有些用戶可能沒有在https://github.com/settings/profile中定義的電子郵件地址,並導致API響應中的電子郵件字段爲空。沒有什麼可以做的,但嘮叨組織中的用戶設置他們的電子郵件:)。 –

+0

至少應該有一個'email'地址,用戶在github或github上的組織成員上註冊。我希望這封電子郵件能被退回。 – auny

4

你可以改用git倉庫!裏面有很多有趣的信息。

嘗試運行:

git shortlog -s -n -e 

您將看到的電子郵件地址提交者的名單。

1

使用GraphQL API v4,您不必爲每個用戶調用一個請求。下面將得到一個組織的成員與他們email(如果在公共檔案中提供):

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

Try it in the explorer

相關問題