通过ID获取Github用户名

50

使用这个链接,我可以看到我的(Github) id是218821,用户名是tonylampada。

https://api.github.com/users/tonylampada

相反地,如果给定用户id= 218821,如何获取用户名?


更新

回答nulltoken的问题,因为这是一个很长的故事,不能放在评论中。

FreedomSponsors是一个Django应用程序,使用django-social-auth实现了与Github(以及其他平台)的登录功能。 (你应该去看一下,请参见博客中的关于页面 :-) Django-social-auth有一个配置标志,允许应用程序将Github用户名存储在数据库中。 几天前,我部署了一个新版本的FS,启用了Github登录,但将“storeGithubUsername”设置为false。

一些用户注册了他们的Github账户,现在数据库中有了它们的Github ID,但没有它们的用户名。
你可以在我的资料页中查看,我将Github作为“连接的账户”,但没有链接到我的Github页面。
我需要把它修正,使链接指向https://github.com/tonylampada 我准备通过将“storeGithubUsername”(这不是它的实际名称,我只是简化了)设置为true来部署一个新版本来解决这个问题。 但我想用已经注册的Github用户修补数据库。我有他们的Github ID,但没有他们的Github用户名。


你为什么需要这个? - nulltoken
长话短说,更新了问题。请知道答案:o) - Tony Lâmpada
那么我猜想没有办法从ID中获取用户名,对吗? - Lipis
4个回答

88

为了解决用户在GitHub上更改用户名后我们查询他们的旧用户名时会得到404响应的情况,我们需要在Gitter上进行此项操作。

这里有一个未记录的端点,所以使用时需自行决定,但目前它确实有效。

使用端点: https://api.github.com/user/:id ,其中:id是用户的ID。

类似的端点也适用于存储库和组织,分别为https://api.github.com/repositories/:idhttps://api.github.com/organizations/:id

请注意,新的存储库重定向预览API仅支持存储库,而不支持已重命名的用户或组织。 实际上,HTTP 301重定向实际上指向https://api.github.com/repositories/:id,因此这些“ID”端点很可能很快成为官方端点。


1
谢谢!我测试过了,它可以正常工作。我已更新该答案为正确答案。 - Tony Lâmpada
3
它不再起作用了,至少在我写作的这个时间不起作用。 - noun
哦,从来没有意识到ID是连续的。 - Allison
在响应头中找到了限制:x-ratelimit-limit: 60 - zenoh
1
23-05-13 它能工作,但是它是 api.github.com/user/<id> ,没有冒号。 - qiz_newbie
显示剩余3条评论

8

据我所知,没有任何记录的功能,也没有我知道的未记录的功能可以公开检索用户名。从GitHub API使用者的角度来看,用户ID是一种“实现细节”。真正的关键是用户名。

据我所理解,您只需要在给定ID列表的情况下批量获取用户名。这将是一个一次性请求,而不是长期需求。

由于您的请求似乎合法且范围有限,因此您可以通过向support@github.com发送电子邮件直接从GitHub支持团队获得答案。

事实上,xpaulbettsx,一位GitHub员工,甚至发布了推文

Support@适用于您想要告诉GitHub的任何内容-错误,功能,高5;除了安全问题之外,所有内容都会转到security@


尽管用户名是“真正的关键”,但它可能会发生变化,这可能会带来问题。 - My1

4

-1
到我回答这个问题的时候,目前可行的方法是: https://api.github.com/user/USER_ID 备注:这与Andrew在2015年分享的方法类似,只需删除他分享的URL中的冒号即可。

以防你还不知道,:id 表示一个 URL 参数变量,有些地方使用 {id},因此你只需要用实际的 id 来替换整个内容即可。 - Alan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接