0

Im trying to convert a post connection to the walmart api, from php to ruby, this is the php version

$client_id = $data['client_id']; $client_secret = $data['client_secret']; $url = "https://marketplace.walmartapis.com/v3/token"; $uniqid = uniqid(); $authorization_key = base64_encode($client_id.":".$client_secret); $code = ""; $ch = curl_init(); $options = array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 60, CURLOPT_HEADER => false, CURLOPT_POST =>1, CURLOPT_POSTFIELDS => "grant_type=client_credentials", CURLOPT_HTTPHEADER => array( "WM_SVC.NAME: Walmart Marketplace", "WM_QOS.CORRELATION_ID: $uniqid", "Authorization: Basic $authorization_key", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded", ), ); curl_setopt_array($ch,$options); $response = curl_exec($ch); $code = curl_getinfo($ch,CURLINFO_HTTP_CODE); curl_close($ch); 

and this is what i have so far:

url = "https://marketplace.walmartapis.com/v3/token/" uniqid = "1234567890a1b" uri = URI.parse(url) request = Net::HTTP::Post.new(uri) request["WM_SVC.NAME"] = "Walmart Marketplace" request["WM_QOS.CORRELATION_ID"] = uniqid request.basic_auth(client_id, client_secret) request["Accept"] = "application/json" request.content_type = "application/x-www-form-urlencoded" request["WM_SVC.VERSION"] = "1.0.0" req_options = { use_ssl: uri.scheme == "https", } response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| http.request(request) end puts "error " + response.code puts response.body 

Now, im getting a 400 error, so something of the data im sending is incorrect or missing... comparing both, i dont have set the postfields option on ruby, for the POST request, not sure if the rest is required as well... any ideas?

1
  • 1
    I'd say missing grant_type=client_credentials is the reason, most probably... Commented Sep 7, 2020 at 7:37

1 Answer 1

1

Try adding this line:

request.body = 'grant_type=client_credentials' 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.