【问题标题】:I keep receiving bad status codes (400, 401, 403) when making a request to the GitHub API via Faraday通过 Faraday 向 GitHub API 发出请求时,我不断收到错误的状态代码(400、401、403)
【发布时间】:2019-12-12 07:43:57
【问题描述】:

我正在开发一个小型 Rub​​y 程序,以从我的 Pocket 帐户中收集 GitHub URL,然后在我的 GitHub 帐户上为这些存储库加注星标。我已经能够连接到 Pocket 的 API 并从我的提要中获取 URL,但是我对“https://api.github.com/user/starred”端点的请求遇到了问题。

这是我正在使用的

我最初在我的 Mac 上使用 Paw 来获取 Pocket 和 GitHub 的授权令牌 - Pocket API 在 Paw 和我的 Rub 中都可以正常工作,但 GitHub 请求只能在 Paw 中工作。

我已经使用 Faraday.new 和一个简单的 Faraday.get 尝试了两种类型的 Faraday 请求语法(您可以在代码中看到它们)

require 'faraday'
require 'json'

github = Faraday.new(
  url: 'https://api.github.com/user/starred',
  headers: {
    'Accept ': 'application/vnd.github.v3+json',
    'Authorization': 'Bearer ***SUPER_SECRET_SAUCE***',
    'User-Agent': 'jriggles'
  }
)

pocket = Faraday.get(
  'https://getpocket.com/v3/get?consumer_key=***MY_POCKET_KEY**&access_token=***MY_POCKET_TOKEN***&contentType=article&detailType=simple&sort=newest&domain=github.com&count=100',
  'Content-Type': 'application/json; charset=UTF8',
  'X-Accept': 'application/json',
  'User-Agent': 'jriggles'
)

if pocket.status == 200
  parsed_response = JSON.parse(pocket.body)
  parsed_response['list'].each do |_key, val|
    owner = val['given_url'].split('/')[3]
    repo = val['given_url'].split('/')[4]
    puts github.get("/#{owner}/#{repo}").status
  end
else puts "Connection to Pocket failed - Code #{pocket.status}"
end

这是返回 HTTP 状态代码的行:

puts github.get("#{owner}/#{repo}").status

我尝试了一些排列,我只得到了 [401]、[403] 和在当前的迭代中 [400]。我不确定这是我的 GitHub 授权问题还是我的法拉第语法问题,或两者兼而有之。

【问题讨论】:

    标签: ruby api github oauth faraday


    【解决方案1】:

    似乎使用法拉第发出口袋请求对您有用,这表明您可能正确使用它。

    查看 GitHub 文档 https://developer.github.com/v3/#authentication 我建议将 'Bearer' 替换为 'token' 看看是否有帮助。

    【讨论】:

    • 我试了一下!恐怕我仍然收到代码 400。
    • 其他信息 - 在 Paw 中使用令牌类型“Bearer”或“Token”都会给我代码 200...由于某种原因它在那里工作,但它没有我使用哪个似乎并不重要。
    【解决方案2】:

    我想通了!我是土豆。

    我的 GitHub API 请求的标头参数中有错字:

    'Accept ': 'application/vnd.github.v3+json'
    

    应该是

    'Accept': 'application/vnd.github.v3+json',
    

    我在“接受”之后有一个空格!

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2014-06-11
      • 1970-01-01
      • 2015-12-04
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多