Подключитесь к стороннему API с публикацией HTTParty и получите, Ruby

Я пытаюсь подключиться к некоторому API, используя HTTParty. Сначала мне нужно войти в систему с моими учетными данными, чтобы получить токен, а позже мне нужно использовать этот токен для выполнения других запросов на получение.

Когда я делаю:

def get_token
    HTTParty.post(base_url + '/login', headers: { "Content-Type": "application/json" }, body: body_hash).body
end

куда

def body_hash
    {
        "username": "my_username",
        "apikey": "7867868yiuhi76"
    }.to_json
end

и при этом я правильно получаю токен.

Затем я пытаюсь выполнить GET для другого URL-адреса в API следующим образом:

response = JSON.parse(get_token)            
data = HTTParty.get(base_url + '/some_path', headers: { "Content-Type": "application/json", "Authorization: Bearer" => response['token'] }).body
puts data

и получаю ошибку:

"Internal server error"

Кто-нибудь знает, в чем здесь может быть дело? Спасибо.


person BlueIvy    schedule 19.09.2016    source источник
comment
Не могли бы вы предоставить дополнительную информацию об используемом вами API?   -  person jan.zikan    schedule 19.09.2016
comment
попробуйте заголовки как { "Content-Type": "application/json", "Authorization": "Bearer " + response['token'] }   -  person Anthony    schedule 19.09.2016
comment
@Энтони Изменение заголовков таким образом сработало, спасибо!   -  person BlueIvy    schedule 19.09.2016


Ответы (1)


Вы просто перепутали параметры в заголовках. Предполагая, что это Oauth/Oauth2, вам нужно отправить ключ «Авторизация» со значением «Токен носителя».

Итак, для вашего примера:

HTTParty.get(base_url + '/some_path', headers: { "Content-Type": "application/json", "Authorization": "Bearer #{response['token']}" }).body
person Anthony    schedule 20.09.2016