/ / Come inviare una chiave / una coppia segreta con l'API Poloniex? - python, api

Come inviare una coppia chiave / segreta con l'API Poloniex? - python, api

Sto cercando di scrivere un semplice script per convalidare che sto facendo una chiamata API correttamente, e poi ho intenzione di costruire un programma più complesso da lì. La risposta all'errore che sto ricevendo è:

{"error":"Invalid API key/secret pair."}

La documentazione dell'API su cosa sto lavorando può essere trovata su:

https://poloniex.com/support/api/

Ho appena incrementato manualmente il nonce per mantenere le cose semplici.

Il mio codice è:

import urllib
import urllib2
import json
import time
import hmac,hashlib

APIKey = "<my_API_key>"
Secret = "<my_secret>"
post_request
"command=returnBalances"
sign = hmac.new(Secret, post_request, hashlib.sha512).hexdigest()

ret = urllib2.urlopen(urllib2.Request("https://poloniex.com/tradingApi?   key=" + APIKey + "&sign=" + sign + "&nonce=0008"))

print ret.read()

risposte:

4 per risposta № 1

Supponendo che APIKey e Secret siano OK, la seguente versione funzionerà:

import urllib
import urllib2
import json
import time
import hmac,hashlib


req={}

APIKey = "<my_API_key>"
Secret = "<my_secret>"

command="returnBalances"

req["command"] = command

req["nonce"] = int(time.time()*1000)
post_data = urllib.urlencode(req)

sign = hmac.new(Secret, post_data, hashlib.sha512).hexdigest()
#print sign
headers = {
"Sign": sign,
"Key": APIKey
}

ret = urllib2.urlopen(urllib2.Request("https://poloniex.com/tradingApi", post_data, headers))
jsonRet = json.loads(ret.read())

print jsonRet

Se si esegue questo codice con il proprio segreto e APIchiave e ancora non funziona. Questo è sicuro che il tuo APIKey o il tuo segreto hanno errori di battitura !! [o APIkey è limitato a "withdraw only" o hai selezionato la restrizione IP e prova a connetterti da un IP sconosciuto.]


1 per risposta № 2

La documentazione dell'API dice:

Tutte le chiamate all'API di trading vengono inviate tramite HTTP POST a https://poloniex.com/tradingApi e deve contenere le seguenti intestazioni:

  • Chiave: la tua chiave API.
  • Segno - I dati POST della query "firmati dalla chiave" s "segreti" in base al metodo HMAC-SHA512.

Inoltre, tutte le query devono includere un parametro POST "nonce".

Anche se dice "header", penso che significhi parametri POST.

Anche guardando il implementazione Python di riferimento collegato dai documenti, sembra che l'API lo desideri Key e Sign come intestazioni e nonce come parametro POST.

Cambia la tua richiesta da:

urllib2.Request("https://poloniex.com/tradingApi?   key=" + APIKey + "&sign=" + sign + "&nonce=0008")

a:

data = urllib.urlencode({
"nonce": "0008",
# ...
# insert here the other parameters you need
# ...
})
headers = {
"Key": APIKey,
"Sign": sign,
}
urllib2.Request("https://poloniex.com/tradingApi", data, headers)