2016-09-08 21 views
3

Я использую HTTParty для получения данных из API Eventbrite.«OpenURI :: HTTPError: 401 Unauthorized» с Rails, HTTParty и Paperclip

response = HTTParty.get("https://www.eventbriteapi.com/v3/events/search?token=#{Figaro.env.eventbrite_oauth_token}") 

Я пытаюсь сохранить привязанность к событию для своего объекта. (Я использую paperclip для загрузки изображений).

@event.image = "https://img.evbuc.com/http%3A%2F%2Fcdn.evbuc.com%2Fimages%2F18699100%2F162201087004%2F1%2Foriginal.jpg?h=200&w=450&rect=0%2C194%2C2000%2C1000&s=67649c6c8e7ef66e409189bf08474203" 

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

"OpenURI::HTTPError: 401 Unauthorized" with Rails, HTTParty, and Paperclip."

Любые идеи о том, как исправить?

+0

Вы проверили, является ли значение для '# {Figaro.env.eventbrite_oauth_token}' действительным токеном? – Dharam

+0

Да, это действительно так. –

+0

Мне удалось вызвать 'response = HTTParty.get (" https://www.eventbriteapi.com/v3/events/search?token=#{Figaro.env.eventbrite_oauth_token} ")' с моим собственным токеном без каких-либо проблем , Вы получаете ошибку при этом вызове или позже? – Dharam

ответ

3

Я заметил в новых версиях Paperclip, мне нужно было обернуть любые строки URL в URI.parse, когда вы попросите Paperclip импортировать этот актив через URL.

Так для примера:

@event.image = URI.parse("https://img.evbuc.com/http%3A%2F%2Fcdn.evbuc.com%2Fimages%2F18699100%2F162201087004%2F1%2Foriginal.jpg?h=200&w=450&rect=0%2C194%2C2000%2C1000&s=67649c6c8e7ef66e409189bf08474203") 
0

Я посмотрел в Paperclip код, чтобы увидеть, почему оборачивать URL в URI.parse работает.

Как оказалось, Paperclip использует различные классы адаптеров для обработки различных целей.

Причина, по которой ваше вложение не удалось в первую очередь, связано с a recent change в обработке URL-адресов в HttpUrlProxyAdapter, который обрабатывает URL-адреса. Это изменение не позволяет прикреплять файлы, у которых есть URL-адреса, которые уже закодированы.

Приобретение URL-адреса с помощью URI.parse гарантировало, что ваше приложение было обработано адаптером URI.