2

PaypalDeveloperの指示に従ってください'最初の電話をかけます':

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"

それは機能していて、命令の状態のように期待される結果を得ることができますが、私はルビーの縁石の宝石を使用することを好みます:

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"}

確かにエラーですが、私の縁石構文の何が問題になっていますか?何か案が?

4

1 に答える 1

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バージョンと比較できます。

それが違いを発見するのに役立つことを願っています。

于 2013-03-26T09:39:45.710 に答える