Ich versuche, einfache Anwendung für mich selbst zu schreiben, und wenn ich versuche, getInfo Methode aufrufen, bekomme ich immer einen Fehler in der Antwort. Schlüssel, Zeichen, Methode oder Nonce ist falsch. Ich habe eine Reihe von Beispielen gefunden, aber ich kann immer noch keinen Fehler in meinem Code finden. Könnte mir jemand damit helfen?YoBit Tapi Probleme mit Authetincation
Der Code funktioniert gut für hitbtc. Ich weiß, Yobit ist ein bisschen anders, aber ich denke, dass ich das beherzige.
Mein Code:
Protected Shared Function readStrings(signatureheader As String, host As String, pathandQuery As String, post As String, secret As String, hasher As System.Security.Cryptography.HMAC, otherHeaders As Tuple(Of String, String)()) As String
'apikey=98998BEEB8796455044F02E4864984F4
'secret=44b7659167ffc38bb34fa35b5c816cf5
hasher.Key = exchanges.getBytes(secret)
Dim url = host + pathandQuery ' url = "https://yobit.net/tapi/"
Dim wc = New CookieAwareWebClient()
Dim sigHash2 = ""
If post = "" Then
sigHash2 = CalculateSignature2(pathandQuery, hasher)
Else
'post = "method=getInfo&nonce=636431012620"
sigHash2 = CalculateSignature2(post, hasher) 'sighash2= "ece0a3c4af0c68dedb1f840d0aef0fd5fb9fc5e808105c4e6590aa39f4643679af5da52b97d595cd2277642eb27b8a357793082007abe1a3bab8de8df24f80d2"
End If
wc.Headers.Add(signatureheader, sigHash2) ' SignatureHeader ="Sign"
Dim response = ""
For Each oh In otherHeaders ' otherHeaders =(0) {(Key, 98998BEEB8796455044F02E4864984F4)} System.Tuple(Of String, String)
wc.Headers.Add(oh.Item1, oh.Item2)
Next
'- wc.Headers {Sign: ece0a3c4af0c68dedb1f840d0aef0fd5fb9fc5e808105c4e6590aa39f4643679af5da52b97d595cd2277642eb27b8a357793082007abe1a3bab8de8df24f80d2 Key: 98998BEEB8796455044F02E4864984F4 } System.Net.WebHeaderCollection
'url = "https://yobit.net/tapi/"
'post = "method=getInfo&nonce=636431012620"
If post = "" Then
response = wc.DownloadString(url)
Else
response = wc.UploadString(url, post) 'response = response "{"success":0,"error":"invalid key, sign, method or nonce"}" String
End If
Return response
End Function
Der Code wurde erfolgreich für hitbtc getestet.
Also der Crypto-Teil ist richtig. Ich es hier sowieso auf Vollständigkeit
Protected Shared Function CalculateSignature2(text As String, hasher As System.Security.Cryptography.HMAC) As String
Dim siginhash = hasher.ComputeHash(exchanges.getBytes(text))
Dim sighash = exchanges.getString(siginhash)
Return sighash
End Function
So
für Plausibilitätsprüfung
Dieser Code funktioniert
Public Overrides Sub readbalances()
Dim response = readStrings("X-Signature", "https://api.hitbtc.com", "/api/1/trading/balance?nonce=" + exchanges.getNonce().ToString + "&apikey=" + _apiKey, "", _secret, New System.Security.Cryptography.HMACSHA512(), {})
End Sub
Mit yobit die Dinge anders. Ich muss Post benutzen anstatt zu bekommen. Ich habe mehr Header hinzufügen. Aber ich denke, das habe ich behoben.
Es funktioniert nicht.
Die Python-Funktion für yobit API ist dieses Ich muss nur das vb.net übersetzen, die ich glaube, ich habe
API Call Authentication in Python (Working PHP example)
Ich denke, treu
getan der Fehler hier istrequest_url = "https://yobit.net/tapi";
request_body = "method=TradeHistory&pair=ltc_btc&nonce=123";
signature = hmac_sha512(request_body,yobit_secret);
http_headers = {
"Content-Type":"application/x-www-form-urlencoded",
"Key":yobit_public_key,
"Sign":signature
}
response = http_post_request(request_url,request_body,http_headers);
result = json_decode(response.text);
Dort ist das Zeug, das ich kopiert habe, method = getInfo & nonce = 636431012620 was ist, was ich in den Post gesetzt habe.
Das scheint also richtig.
Ich glaube nicht an die URL, die Sie hinzufügen Methode hinzugefügt. Sie sollten post-Befehl verwenden. –
Vielen Dank für Ihre Antwort. Du hast recht. Das Problem war mit falscher Anfrage. Ich habe bereits die Lösung gefunden – Alex