【问题标题】:Newsletter2go ruby API client authorisation with get_token methodNewsletter2go ruby​​ API 客户端授权与 get_token 方法
【发布时间】:2019-10-07 22:32:28
【问题描述】:

美好的一天! 您能否给我一个使用 ruby​​ newslettr2go API 客户端的身份验证请求示例。 我想不通。 我可以使用RestClient.post "#{link}/oauth/v2/token", credentials, default_header 等直接请求连接到 API 在凭据中,我使用我的usernamepasswordgrant_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" 一直在发生。

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

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

【问题讨论】:

  • 您确定您的ENV 变量填充了正确的值吗?
  • 我也使用它们来提出手动请求。不同之处在于我使用 "Basic #{Base64.strict_encode64(ENV['NEWSLETTER2GO_AUTH_KEY'])}" } 但我尝试了两个选项,编码和精确 - 都给了我同样的错误。看起来问题在于它根本没有抓取 API_KEY。
  • printenv | grep NEWSLETTER2GO_AUTH_KEY 是否包含值?
  • 否,但所有其他环境变量也不会显示。我认为这是另一回事:rails envs 和 linux envs,是吗?
  • 这取决于你在哪里设置环境变量,你是如何设置这些变量的?

标签: ruby-on-rails ruby api authorization newsletter2go


【解决方案1】:

我找到了 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

【讨论】:

    猜你喜欢
    • 2020-09-23
    • 2017-05-16
    • 2013-06-18
    • 2014-11-18
    • 2018-08-22
    • 1970-01-01
    • 2018-12-01
    • 2018-07-11
    • 1970-01-01
    相关资源
    最近更新 更多