在我的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"]})
但我收到的消息是,此处只允许进行基本身份验证。
我想问你,我在这里错过了什么?
答案 0 :(得分:1)
您可能已经登录但未获得该范围的许可'读取:org'。您可能希望尝试重新登录,并查看是否需要为新添加的范围提供权限。很可能是Rails /令牌中的数据库与GitHub OAuth流之间存在不匹配。
答案 1 :(得分:0)
经过深入调查后,我发现提取组织需要基本身份验证(用户名和密码)或OAuth token,因此我创建了一个令牌,现在工作正常。