Авторизация клиента ruby ​​API Newsletter2go методом get_token - PullRequest
0 голосов
/ 04 октября 2019

Добрый день! Можете ли вы дать мне пример запроса на аутентификацию с клиентом ruby ​​newsletetr2go API. Я не могу понять это. Я могу подключиться к API, используя прямые запросы, такие как RestClient.post "#{link}/oauth/v2/token", credentials, default_header. В учетных данных я использую мои username, password и grant_type, преобразованные в формат json

В заголовке по умолчанию я использую content_type: 'application/json' и authorization: "Basic #{Base64.strict_encode64(ENV['NEWSLETTER2GO_AUTH_KEY'])}" И это прекрасно работает. Но когда я пытаюсь использовать метод newsletter2go get_token, все, что я получаю, это ошибка "BAD REQUEST".

Я использую инициализатор для настройки SwaggerClient следующим образом:

SwaggerClient.configure do |config|
  # Configure OAuth2 access token for authorization: OAuth
  config.password   = ENV['NEWSLETTER2GO_PASSWORD']
  config.username   = ENV['NEWSLETTER2GO_USERNAME']
  config.api_key    = ENV['NEWSLETTER2GO_AUTH_KEY']
end

Послечто я использую вызов метода newsletter2go api

SwaggerClient::AuthorizationApi.new.get_token("https://nl2go.com/jwt")

Кажется, все правильно, но ошибка "BAD REQUEST" происходит постоянно.

Я следовал инструкциям, установил swagger_client с расширениями ruby ​​вМетоды github и newsletter2go теперь доступны в моей среде rails. Если я беру access_token вручную и добавляю его в свой инициализатор, то выполняю некоторые запросы, например SwaggerClient::ListApi.new.get_lists, он дает мне правильный ответ с status 200 и list_ids

Но SwaggerClient::AuthorizationApi.new.get_token("https://nl2go.com/jwt") не работает иэто проблема. Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 07 октября 2019

Я выяснил причину, по которой клиент Ruby API Newsletter2Go не получает значение api_key. По какой-то причине он жестко задан для установки базового токена аутентификации, который состоит из имени пользователя и пароляВот код от

module SwaggerClient class Configuration

# Gets Basic Auth token string
def basic_auth_token
  'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n")
end

# Returns Auth Settings hash for api client.
def auth_settings
  {
    'OAuth' =>
      {
        type: 'oauth2',
        in: 'header',
        key: 'Authorization',
        value: "Bearer #{access_token}"
      },
    'Basic' =>
      {
        type: 'basic',
        in: 'header',
        key: 'Authorization',
        value: basic_auth_token
      },
  }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...