【问题标题】:How to retrieve data from an Api using Faraday gem如何使用 Faraday gem 从 Api 检索数据
【发布时间】:2015-12-09 12:23:39
【问题描述】:

我正在尝试使用 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 %>

我该如何解决这个问题?
或者 我可以使用他们的任何其他选项来直接访问该数据而无需进行第二次身份验证吗?。

【问题讨论】:

  • “在不同页面上授权” - 您的意思是您将身份验证数据传递给 api 并在那里授权?
  • 基本上我在应用程序中有一个按钮,如果你点击它,它会连接到精确的在线身份验证系统,然后在登录后它会返回我的应用程序。 It acts like facebook login button: 之后,如果我尝试从 Exactonline API 访问一些数据,它会返回 401 错误
  • 请记住在 URL 中包含部门 ID。 {division} 只是一个必须填写的信号。登录时可以在 URL 中找到 Division 或使用 'select * from systemdivisions'。

标签: ruby-on-rails ruby faraday exact-online


【解决方案1】:

对于 API,每个请求通常都需要以令牌形式在 HTTP 标头中传递的身份验证。如果这就是这个 API 的工作方式,您可以尝试以下方法:

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

【讨论】:

  • 我已通过访问令牌,但仍然输出 404 错误
猜你喜欢
  • 2020-09-21
  • 2015-10-09
  • 2019-07-19
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
相关资源
最近更新 更多