Я продолжаю получать неверные коды состояния (400, 401, 403) при запросе к GitHub API через Faraday

Я работаю над небольшой программой на Ruby, чтобы собирать URL-адреса GitHub из моей учетной записи Pocket, а затем отмечать эти репозитории в моей учетной записи GitHub. Мне удалось подключиться к Pocket API и получить URL-адреса из моего фида, но у меня проблемы с запросами на ссылку "https://api.github.com/user/starred "конечная точка.

Это то, что я использую

Сначала я использовал Paw на своем Mac, чтобы получить токены авторизации для Pocket и GitHub - Pocket API отлично работает как в Paw, так и в моем Rub, но запрос GitHub работает только в Paw.

Я пробовал оба варианта синтаксиса запроса Фарадея (вы можете увидеть их в коде), используя Faraday.new и простой Faraday.get

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, в синтаксисе Фарадея или в обоих сразу.


person JRiggles    schedule 04.08.2019    source источник


Ответы (2)


Похоже, что использование Фарадея для карманных запросов работает на вас, что говорит о том, что вы, вероятно, используете его правильно.

Изучите документацию GitHub https://developer.github.com/v3/#authentication Я бы предложил заменить «предъявителя» на «токен» и посмотреть, поможет ли это.

person Yoav Epstein    schedule 04.08.2019
comment
Я попробовал! Боюсь, я все еще получаю код 400. - person JRiggles; 05.08.2019
comment
Дополнительная информация - Использование типа токена Bearer или Token in Paw дает мне код 200 ... по какой-то причине он там работает, и, похоже, не имеет значения, какой я использую. - person JRiggles; 05.08.2019

Я понял! Я картошка.

В параметрах заголовка моего запроса GitHub API есть опечатка:

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

должно быть

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

У меня был пробел после "Принять"!

person JRiggles    schedule 05.08.2019