我已经在我的Rails4应用程序上设置了Omniauth,以允许用户使用Github登录。

这部分工作正常。

现在,我想列出该用户的存储库(我请求范围 repo 当要求用户授权我的应用程序。

我做了很多谷歌搜索,但我不明白如何做到这一点。

任何人都可以请告诉我如何使用现有的身份验证列出我的用户的存储库?

有帮助吗?

解决方案

那么,OmniAuth只是一个灵活的身份验证库。它的唯一目的是对用户进行身份验证。您想要的任何自定义行为都必须由您或其他gem实现。

你可以通过简单的使用来实现你想要的 GitHub的有据可查的API:

# callbacks_controller.rb
require "open-uri"
require "json"

omniauth = env['omniauth.auth']
repositories_json = open(omniauth.extra.raw_info.repos_url,
  "Accept" => "application/vnd.github.v3+json",
  "Authorization" => "token #{omniauth.credentials.token}"
).read
repositories = JSON.parse(repositories_json)

如果这是你所需要的,那么无论如何,使用它。如果你除此之外还有其他要求,那么也许你应该看看 github gem.

此外,您应该只使用范围 repo 如果您想访问用户的私人回购。并且请求访问用户的私人回购有点侵入性,所以不要轻率地这样做。

如果你真的想访问用户的私人回购,那么你必须追加 ?type=all 到repos_url的末尾。所以你必须做一些类似的事情:

open("#{omniauth.extra.raw_info.repos_url}?type=all" ... )
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top