【问题标题】:List all organizations form Github using Octokit使用 Octokit 从 Github 列出所有组织
【发布时间】:2018-04-11 13:44:55
【问题描述】:

在我的 Rails 应用程序中,我想列出用户的组织及其存储库。我正在使用 omniauth-github 向 Github 进行身份验证,所以一旦我从 Github 获得令牌,我就会这样做:

client = Octokit::Client.new(:access_token => token)
client.orgs

在omniauth.rb中

provider :github, ENV['GITHUB_CLIENT_ID'], ENV['GITHUB_CLIENT_SECRET']

它抛出一个错误 GET https://api.github.com/user/orgs: 403 - You need at least read:org scope or user scope to list your organizations. // See: https://developer.github.com/v3/orgs/#list-your-organizations

所以我将它添加到初始化程序并重新启动服务器:

provider :github, ENV['GITHUB_CLIENT_ID'], ENV['GITHUB_CLIENT_SECRET'], scope: 'read:org'

但我得到了同样的错误。

我也尝试在 Octokit 客户端中提供范围:

client.create_authorization({:idempotent => true, :client_id => 'xxxx', :client_secret => 'yyyy', :scopes => ["read:org"]})

但我收到一条消息,这里只允许基本身份验证。

我想问你,我在这里错过了什么?

【问题讨论】:

  • 您确定您已对您的应用使用的 OAuth 令牌设置了正确的读取权限吗? (github.com/settings/developers)
  • 我已将所有内容设置为只读,因此我应该可以访问它,但我收到 403 错误消息。还有其他想法吗?

标签: ruby-on-rails github octokit


【解决方案1】:

经过深入调查,我发现获取组织需要基本身份验证(用户名和密码)或OAuth token,因此我创建了一个令牌,现在它可以正常工作了。

【讨论】:

    【解决方案2】:

    您可能在未授予范围“read:org”权限的情况下登录。您可能想尝试重新登录,看看是否需要为新添加的范围授予权限。很可能是 Rails/tokens 中的数据库与 GitHub OAuth 流程不匹配。

    【讨论】:

    • 我已经尝试注销,在我的应用程序中再次进行身份验证,但我得到了同样的错误。我不将令牌存储在我的数据库中,因为我认为它们不是持久的会话。
    猜你喜欢
    • 2020-07-21
    • 1970-01-01
    • 2021-07-11
    • 2016-05-13
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    相关资源
    最近更新 更多