【问题标题】:Using ruby curb gem to access paypal api使用 ruby​​ 遏制 gem 访问 paypal api
【发布时间】:2013-03-16 00:29:24
【问题描述】:

按照 Paypal 开发人员“拨打您的第一个电话”中的说明进行操作:

curl https://api.sandbox.paypal.com/v1/oauth2/token \
 -H "Accept: application/json" \
 -H "Accept-Language: en_US" \
 -u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \
 -d "grant_type=client_credentials"

它正在工作并获得指令状态的预期结果,但我更喜欢使用 ruby​​ cream gem:

require 'curl'

paypal_result = Curl::Easy.http_post("https://api.sandbox.paypal.com/v1/oauth2/token", "grant_type=client_credentials") do |http|
  http.headers['Accept'] = "application/json"
  http.headers['Accept-Language'] = "en_US"
  http.username = "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp"
end

puts paypal_result.body_str

但是我得到了以下信息:

{"error":"invalid_client","error_description":"The basic auth authorization header cannot be decoded"}

这肯定是一个错误,但我的限制语法有什么问题?有什么想法吗?

【问题讨论】:

  • 谢谢乔纳森。我使用了详细信息并将用户名替换为 userpwd,但它不起作用:(
  • 您可以使用paypal-sdk-rest gem 来简化您的代码。

标签: ruby curl paypal curb


【解决方案1】:

我不能确切地告诉你出了什么问题,但我可以告诉你如何查看正在发生的事情。尝试将其置于详细模式,这样您就可以看到实际发送的数据和标头:

curl = Curl::Easy.new

# Make it verbose, prints to stderr
curl.verbose = true

paypal_result = curl.http_post("https://api.sandbox.paypal.com/v1/oauth2/token", "grant_type=client_credentials") do |http|
  # etc.
end

您可以使用 -v 标志与 CLI 版本进行比较。

希望能帮助您发现不同之处。

【讨论】:

  • 我终于找到了问题...我必须设置 http_auth_types = 'basic',你的详细建议对我很有帮助
猜你喜欢
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多