1

在我的 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"]})

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

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

4

2 回答 2

1

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

于 2017-10-30T14:32:39.797 回答
0

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

于 2017-10-31T15:37:31.687 回答