2017-07-21 4 views
5

Ich versuche eine Postanforderung auf GDAX zu stellen. Aber ich erhalte immer eine Nachricht "ungültige Signatur". GDAX API-Dokumentation für die Erstellung Anfrage + Unterzeichnung: https://docs.gdax.com/#creating-a-requestGDAX Post Call gibt ungültige Signatur zurück

Preshash Zeichenfolge gibt die folgenden:

1500627733POST/Aufträge { "Preis": "1000.0", "Größe": "0,02", "type" : "Limit", "Seite": "verkaufen", "product_id": "BTC-EUR"}

Meine Unterschrift Methode:

public String generateSignature(String requestPath, String method, String body, String timestamp) { 
     try { 
      String prehash = timestamp + method.toUpperCase() + requestPath + body; 
      byte[] secretDecoded = Base64.getDecoder().decode(secretKey); 
      SecretKeySpec keyspec = new SecretKeySpec(secretDecoded, "HmacSHA256"); 
      Mac sha256 = (Mac) Mac.getInstance("HmacSHA256").clone(); 
      sha256.init(keyspec); 
      return Base64.getEncoder().encodeToString(sha256.doFinal(prehash.getBytes())); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

Meine Anfrage Methode:

Ich habe auch versucht, eine API Request Call mit Insomnia zu machen, aber es gibt die gleiche Nachricht ("ungültige Signatur") zurück.

Irgendwelche Hinweise?

Vielen Dank im Voraus!

+2

Gleiches Problem, mit dem ich konfrontiert bin. Hast du eine Lösung dazu? – a4arpan

+0

Haben Sie in diesem Problem auch schon einmal herausgefunden, wie Sie dieses Problem beheben können? – thomallen

Antwort

-1

Ich hatte das gleiche Problem.

I verwendet http:

aber die richtige httpS:

Problem gelöst.

1

Sieht so aus, als ob Sie die Preisbestellungsdaten signieren, die eine Zeichenfolge sind, aber für den Text in der Post werden Sie in einen JSON-Knoten umgewandelt. Das stimmt möglicherweise nicht überein, wenn gdax das Signieren decodiert und die Nutzdaten mit dem entschlüsselten (signierten) Körper vergleicht, wenn sie ihn empfangen.

Warum nicht einfach die Zeichenfolge als Körper senden und entfernen Sie die ". ASJSON"?

.body(b) 

ich auf ein ähnliches Problem stecken geblieben war, als ich die API in C# Testen wurde. Nach 3 Nachmittagen des Probierens. Ich habe das Senden der Daten als String getestet und konnte den ungültigen Signaturfehler erhalten.

Verwandte Themen