通过id获取github用户名

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

使用此链接我可以看到我在 github 上的 (tonylampada) id 是 218821 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 用户名。

github github-api
5个回答
90
投票

我们需要在 Gitter 上执行此操作,以处理用户在 GitHub 上更改用户名并且在查询旧用户名时收到 404 响应的情况。

这是一个未记录的端点,因此使用它需要你自己承担风险,但它现在确实有效。

使用端点:

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

存储库和组织存在类似的端点,位于 分别是

https://api.github.com/repositories/:id
https://api.github.com/organizations/:id

请注意,新的存储库重定向预览 API 仅支持存储库,不支持重命名的用户或组织。事实上,HTTP 301 重定向实际上指向

https://api.github.com/repositories/:id
,因此这些“ID”端点很可能很快就会成为正式版本。


8
投票

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

据我了解,您只需要给定 ID 列表的一批用户名。这只是一次性的请求,而不是永久的需要。

由于您的请求似乎合法且范围有限,您可以通过向 GitHub 支持发送电子邮件至 [email protected],直接从他们那里获得答案。

确实,xpaulbettsx,一位 GitHub 博主,甚至发了关于此的推文

Support@ 适合您想告诉 GitHub 的任何事情 - bug、功能、高 5 秒;除了安全之外的所有内容都归 security@


4
投票

此处标记为正确的答案不再有效。你现在会得到

{
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest/reference/users#get-a-user"
}

现在通过 Graphql 进行直接节点查找 https://docs.github.com/en/graphql/guides/using-global-node-ids#3-do-a-direct-node-lookup-in-graphql


0
投票

实际上有一个官方记录的端点可以让您执行此操作:list用户的端点,

/users

它接受两个参数,您可以使用它们来获取特定的用户 ID:

  • since
    - 整数,ID大于此的用户将按顺序返回
  • per_page
    - 限制每页结果数量

因此,给定用户 ID

USER_ID
,您可以使用
since = USER_ID - 1
per_page = 1
发出请求来获取特定用户。

例如,要查找

USER_ID = 1000
,您可以这样设置
since=999

; curl 'https://api.github.com/users?since=999&per_page=1'
[
  {
    "login": "aslakhellesoy",
    "id": 1000,
    ⋮ snip
    "site_admin": false
  }
]


-2
投票

当我回答这个问题时,有效的方法是: https://api.github.com/user/USER_ID

备注:与2015年Andrew分享的类似;您只需删除他共享的 URL 中的冒号即可。

© www.soinside.com 2019 - 2024. All rights reserved.