2015-12-09 1 views
0

Я пытаюсь получить доступ к данным из Exact Online API с использованием Faraday Gem, и он возвращает статус "401", что означает, что я не авторизовался для доступа к этой ссылке до входа в систему, но я уже был завершена, и я успешно зарегистрировался на другой странице.Как получить данные из Api с использованием фонара Фарадея

Если я попытаюсь получить доступ к этой ссылке индивидуально через панель URL браузера, я могу видеть данные.

Вот мой контроллер

def example1 
    @exact_conn = Faraday.new(:url => 'https://start.exactonline.nl') do |data| 
     data.request :url_encoded 
     data.response :logger 
     data.adapter Faraday.default_adapter 
    end 

    data = @exact_conn.get("/api/v1/{division}/salesinvoice/SalesInvoices" 
    @received_data = data.status 
    end 

мой взгляд

<h1>Received Data</h1> 
<%= @received_data %> 

Как я могу решить эту проблему?
Или Является ли их любой другой способ, который я могу использовать для доступа к этим данным напрямую, без повторной аутентификации?

+0

«Разрешено на другую страницу» - вы имеете в виду, что вы передали данные аутентификации в api и разрешили там? – Vasfed

+0

В принципе, у меня есть кнопка в приложении, если вы нажмете на нее, она подключится к системе проверки подлинности точной системы, а затем после входа в систему она вернет меня обратно в приложение. 'Он действует как кнопка входа в facebook': после того, как подопечные, если я попытаюсь получить доступ к некоторым данным из Exactonline API, он возвращает мне ошибку 401 –

+0

Пожалуйста, не забудьте указать идентификатор раздела в URL. {division} - это просто сигнал, который вы должны заполнить. Вы можете найти разделение по URL-адресу при входе в систему или использовать «select * from systemdivisions». –

ответ

0

Для API-интерфейсов для каждого запроса часто требуется аутентификация в виде маркера, переданного в ваших HTTP-заголовках. Если так работает этот API, вы можете попробовать что-то вроде:

@exact_conn.get do |req| 
    req.url('/api/v1/{division}/salesinvoice/SalesInvoices') 
    req.headers['Authorization'] = "Token token=#{your_token_here}" 
end 
+0

Я прошел токен доступа, но он все еще выводит ошибку 404 –