尝试使用Faraday Gem从Exact Online API访问数据,并且它返回状态"401"
意味着在我登录之前无权访问该链接,但我已经过身份验证并且我已成功登录在另一页面。
如果我尝试通过浏览器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 :(得分: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