Newsletter2go ruby API 客户端授权 get_token 方法

Newsletter2go ruby API client authorisation with get_token method

美好的一天! 你能给我一个使用 ruby newsletetr2go API 客户端的身份验证请求示例吗? 我想不通。 我可以使用 RestClient.post "#{link}/oauth/v2/token", credentials, default_header 等直接请求连接到 API 在凭据中,我使用 usernamepasswordgrant_type,转换为 json 格式

默认情况下 header 我使用 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" 一直都在发生。

我按照说明在 github 中安装 swagger_client 和 ruby 扩展,现在可以从我的 rails 环境中使用 newsletter2go 方法。 如果我手动获取 access_token 并将其添加到我的初始化程序中,然后执行一些请求,例如 SwaggerClient::ListApi.new.get_lists 它会给我一个正确的响应 status 200list_ids

但是 SwaggerClient::AuthorizationApi.new.get_token("https://nl2go.com/jwt") 不起作用,这就是问题所在。 任何帮助将不胜感激!

我弄明白为什么Newsletter2Go API ruby 客户端不抓取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