日安!你能给我一个使用ruby newsletetr2go应用编程接口客户端的认证请求的例子吗?我想不出来。我可以使用直接请求连接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方法时,我收到的所有信息都是“请求错误”错误。
我使用初始化器来配置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")不能工作,这就是问题所在。任何帮助都将不胜感激!
发布于 2019-10-07 22:32:29
我找出了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
},
}
endhttps://stackoverflow.com/questions/58238028
复制相似问题