Параметры аутентификации RestClient / HTTParty не используются - PullRequest
0 голосов
/ 19 декабря 2018

Для вызова API я пробовал ..

В RestClient

Работает, но не так:

response = RestClient::Request.execute(
method: :get,
url: 'https://api.data.charitynavigator.org/v2/Organizations?app_id=2b1ffdad&app_key=XXXX',
)

Вводит'Работа (403: запрещено):

response = ::RestClient::Request.execute(method: :get, url: 'https://api.data.charitynavigator.org/v2/Organizations?app_id=2b1ffdad', 
headers: {app_key: 'XXXX'})

В HTTParty

Также не работает (отсутствуют параметры аутентификации):

require 'rubygems'
require 'httparty'


class Charity
  include HTTParty

  base_uri 'https://api.data.charitynavigator.org/v2/'

  def posts

    headers = {
      "app_id"  => "2b1ffdad",
      "app_key"  => "XXXX"
    }

    self.class.get("/Organizations/",
    :headers => headers
    )
  end
end


charity = Charity.new
puts charity.posts

Для справки: https://charity.3scale.net/docs/data-api/reference

Это синтаксис?Я также изучал Фарадей, но столкнулся с аналогичными проблемами там.Многие сторонние примеры API с рельсами, кажется, используют давно устаревшие API, поэтому было сложно собрать все воедино.

Любое понимание будет с благодарностью.Очень хочу это понять.

1 Ответ

0 голосов
/ 19 декабря 2018

Я не могу понять ваше высказывание Работает, но неправильно , но API данных Charity Navigator запрашивает отправку app_id и app_key ключей через параметры, а не заголовок .

Ваш первый код выглядит правильно.

Второй код, ключ app_key был отправлен заголовком, а не параметрами.Итак, ответ API 403.

Третий код, закодированный в геме httpart, не использует параметры, а заголовки.Так что ответ Charity Navigator Data API Authentication parameters missing ошибка.Это нормально.

require 'httparty'

class StackExchange
  include HTTParty
  base_uri 'https://api.data.charitynavigator.org/v2/'

  def posts
    options = { 
      query: {
        app_id: '2b1ffdad',
        app_key: 'XXXX'
      }
    }

    self.class.get("/Organizations/", options)
  end
end

charity = Charity.new
puts charity.posts

Но вы можете использовать параметры query option в httparty.Прочитайте httpsy документы и это SO .И вы можете использовать параметры параметров в геме rest-client.И я настоятельно рекомендую использовать его.

...