【发布时间】:2019-10-07 22:32:28
【问题描述】:
美好的一天!
您能否给我一个使用 ruby newslettr2go API 客户端的身份验证请求示例。
我想不通。
我可以使用RestClient.post "#{link}/oauth/v2/token", credentials, default_header 等直接请求连接到 API
在凭据中,我使用我的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" 一直在发生。
我按照说明在 github 中安装了带有 ruby 扩展的 swagger_client,现在可以从我的 rails 环境中使用 newsletter2go 方法。
如果我手动抓取access_token 并将其添加到我的初始化程序中,然后执行一些类似SwaggerClient::ListApi.new.get_lists 的请求,它会给我以status 200 和list_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