2 votes

Veuillez traduire ceci en conservant les mêmes balises HTML s'il y en a : Bash curl sign hmac

Je cherche à utiliser l'API Bittrex. Le seul exemple fourni est le suivant. Je ne suis même pas sûr de la langue dans laquelle c'est écrit. J'essaie de reproduire ceci en bash. Tous les détails de l'API sont situés ici https://bittrex.com/Home/Api

$apikey='xxx';
$apisecret='xxx';
$nonce=time();
$uri='https://bittrex.com/api/v1.1/market/getopenorders?apikey='.$apikey.'&nonce='.$nonce;
$sign=hash_hmac('sha512',$uri,$apisecret);
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('apisign:'.$sign));
$execResult = curl_exec($ch);
$obj = json_decode($execResult);

J'ai essayé plusieurs choses mais voici la dernière que j'ai essayée.

#Bash
apikey="mykey"
secret="mysecret"
nonce=`date +%s`
uri="https://bittrex.com/api/v1.1/market/getopenorders?apikey=$apikey&nonce=$nonce"
apisig=`echo -n "$uri" | openssl dgst -sha512 -hmac "$secret"`

curl -sG https://bittrex.com/api/v1.1/market/getopenorders?nonce="$nonce"&apikey="$apikey"&apisig="$apisig"

Je reçois "{"success":false,"message":"APIKEY_NOT_PROVIDED","result":null}"

4voto

orhtej2 Points 1672

Ce qui vous manque sont :

  • échapper le & dans la chaîne de requête
  • transmettre le digest en en-tête plutôt qu'en paramètre

Donc le code qui a fonctionné pour moi est :

#!/bin/bash

apikey="mykey"
secret="mysecret"
nonce=`date +%s`
uri="https://bittrex.com/api/v1.1/market/getopenorders?apikey=$apikey&nonce=$nonce"
apisig=`printf %s "$uri" | openssl dgst -sha512 -hmac "$secret"| sed 's/^.*= //'`

curl -sG $uri --header "apisign: $apisig"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X