2

我在遵循私有 API 调用的文档时使用 [Gemini API 文档][1] 时遇到错误。

json输出为:

{'result': 'error', 'reason': 'InvalidSignature', 'message': 'InvalidSignature'}. 

我的代码:

gemini_api_key = getMasterApi()#gets master api key from a json file
gemini_api_secret = getSecretApi().encode()#gets secret api key from a json file
print(gemini_api_secret)
t = datetime.datetime.now() 
payload_nonce =  str(int(time.mktime(t.timetuple())*1000))
payload =  {"request": "/v1/mytrades", "nonce": payload_nonce}
encoded_payload = json.dumps(payload).encode()
b64 = base64.b64encode(encoded_payload)
signature = hmac.new(gemini_api_secret, b64, hashlib.sha384).hexdigest()

request_headers = {
    'Content-Type': "text/plain",
    'Content-Length': "0",
    'X-GEMINI-APIKEY': gemini_api_key,
    'X-GEMINI-PAYLOAD': b64,
    'X-GEMINI-SIGNATURE': signature,
    'Cache-Control': "no-cache"
    }

response = requests.post(url, headers=request_headers)

my_trades = response.json()
print(my_trades)
 [https://docs.gemini.com/rest-api/#public-api-invocation][1]

 
4

4 回答 4

0

如果您使用的是 Gemini 沙箱,则需要使用https://exchange.sandbox.gemini.com/创建您的 API 密钥,而不是使用它们的正常站点。

于 2021-12-07T02:20:37.893 回答
0

如果在您的真实账户而不是沙盒账户上执行此操作,则在创建 API 时,选择具有“资金管理”和“交易”权限的“主要”。“审计员”不允许您与您的资金互动或下订单。

在我这样做之前,我遇到了同样的问题。

于 2022-02-25T00:33:43.303 回答
0

确保您使用的是正确的 URL。如果您使用沙盒帐户创建 API 密钥,则必须将 URL 更改为url = "https://api.sandbox.gemini.com/v1/mytrades".

于 2021-09-04T20:05:43.603 回答
0

我遇到了同样的问题,并且能够通过创建具有主范围(而不是主范围)和审核员权限的新 API 密钥来解决它。

于 2021-05-22T16:05:16.607 回答