Kraken API - 账户余额请求返回无效的 Nonce
Kraken API - Account balances request returning Invalid Nonce
所以我正在使用 kraken api 文档并且我正在尝试 return 我的帐户余额但是当 运行 我的 python 文件时我得到 {'error': ['EAPI:Invalid nonce']}
return编辑。对于我在签名和请求中的随机数,我使用的是 str(int(1000*time.time()))
.
import time
import os
import requests
# Signiture imports
import urllib.parse
import hashlib
import hmac
import base64
# Create Signture
def get_kraken_signature(urlpath, data, secret):
postdata = urllib.parse.urlencode(data)
encoded = (str(data['nonce']) + postdata).encode()
message = urlpath.encode() + hashlib.sha256(encoded).digest()
mac = hmac.new(base64.b64decode(secret), message, hashlib.sha512)
sigdigest = base64.b64encode(mac.digest())
return sigdigest.decode()
api_sec = os.environ['API_SEC_KRAKEN']
data = {
"nonce": str(int(1000*time.time())),
}
signature = get_kraken_signature("/0/private/AddOrder", data, api_sec)
print("API-Sign: {}".format(signature))
# Account Balances
# Read Kraken API key and secret stored in environment variables
api_url = "https://api.kraken.com"
api_key = os.environ['API_KEY_KRAKEN']
api_sec = os.environ['API_SEC_KRAKEN']
# Attaches auth headers and returns results of a POST request
def kraken_request(uri_path, data, api_key, api_sec):
headers = {}
headers['API-Key'] = api_key
# get_kraken_signature() as defined in the 'Authentication' section
headers['API-Sign'] = get_kraken_signature(uri_path, data, api_sec)
req = requests.post((api_url + uri_path), headers=headers, data=data)
return req
# Construct the request and print the result
resp = kraken_request('/0/private/Balance', {
"nonce": str(int(1000*time.time()))
}, api_key, api_sec)
print(resp.json())
我做了一些研究,我知道 nonce 必须是一个递增的值,所以我认为这会奏效,感谢任何帮助,谢谢 :)
我遇到了同样的问题,随机数的字符串长度。
我在 Postman 中测试了我的 Kraken API。成功了。
nonce 的 Postman 代码是:
api_nonce = (Date.now() * 1000).toString();
结果例如:
1650897463009000
来自 Kraken 的 Kraken API Python 示例代码使用以下代码生成随机数:
str(int(1000*time.time()))
它returns这个:
1650897704461
我将代码更改为:
str(1000*int(1000*time.time()))
新代码returns这个:
1650897727222000
API 现在可以工作了,编码愉快!
所以我正在使用 kraken api 文档并且我正在尝试 return 我的帐户余额但是当 运行 我的 python 文件时我得到 {'error': ['EAPI:Invalid nonce']}
return编辑。对于我在签名和请求中的随机数,我使用的是 str(int(1000*time.time()))
.
import time
import os
import requests
# Signiture imports
import urllib.parse
import hashlib
import hmac
import base64
# Create Signture
def get_kraken_signature(urlpath, data, secret):
postdata = urllib.parse.urlencode(data)
encoded = (str(data['nonce']) + postdata).encode()
message = urlpath.encode() + hashlib.sha256(encoded).digest()
mac = hmac.new(base64.b64decode(secret), message, hashlib.sha512)
sigdigest = base64.b64encode(mac.digest())
return sigdigest.decode()
api_sec = os.environ['API_SEC_KRAKEN']
data = {
"nonce": str(int(1000*time.time())),
}
signature = get_kraken_signature("/0/private/AddOrder", data, api_sec)
print("API-Sign: {}".format(signature))
# Account Balances
# Read Kraken API key and secret stored in environment variables
api_url = "https://api.kraken.com"
api_key = os.environ['API_KEY_KRAKEN']
api_sec = os.environ['API_SEC_KRAKEN']
# Attaches auth headers and returns results of a POST request
def kraken_request(uri_path, data, api_key, api_sec):
headers = {}
headers['API-Key'] = api_key
# get_kraken_signature() as defined in the 'Authentication' section
headers['API-Sign'] = get_kraken_signature(uri_path, data, api_sec)
req = requests.post((api_url + uri_path), headers=headers, data=data)
return req
# Construct the request and print the result
resp = kraken_request('/0/private/Balance', {
"nonce": str(int(1000*time.time()))
}, api_key, api_sec)
print(resp.json())
我做了一些研究,我知道 nonce 必须是一个递增的值,所以我认为这会奏效,感谢任何帮助,谢谢 :)
我遇到了同样的问题,随机数的字符串长度。
我在 Postman 中测试了我的 Kraken API。成功了。
nonce 的 Postman 代码是:
api_nonce = (Date.now() * 1000).toString();
结果例如:
1650897463009000
来自 Kraken 的 Kraken API Python 示例代码使用以下代码生成随机数:
str(int(1000*time.time()))
它returns这个:
1650897704461
我将代码更改为:
str(1000*int(1000*time.time()))
新代码returns这个:
1650897727222000
API 现在可以工作了,编码愉快!