Nossos feeds privados da API WebSocket (como o feed openOrders) exigem um token de autenticação do endpoint GetWebSocketsToken da API REST.
Veja a seguir um exemplo do código Python 3 para chamar o endpoint GetWebSocketsToken da API REST, analisar a resposta JSON e enviar o novo token de autenticação WebSocket:
#!/usr/bin/env python3# Importação de bibliotecas Python necessáriasimport timeimport base64import hashlibimport hmacimport urllib.requestimport json # Copie/cole a chave pública da API e a chave privada da API, conforme exibido no gerenciamento de contasapi_key = 'COPIE/COLE A CHAVE PÚBLICA DA API'api_secret = 'COPIE/COLE A CHAVE PRIVADA DA API' # Variáveis (método da API, nonce, e dados POST)api_path = '/0/private/GetWebSocketsToken'api_nonce = str(int(time.time()*1000))api_post = 'nonce=' + api_nonce # Hasg dos algoritmos de criptografiaapi_sha256 = hashlib.sha256(api_nonce.encode('utf-8') + api_post.encode('utf-8'))api_hmac = hmac.new(base64.b64decode(api_secret), api_path.encode('utf-8') + api_sha256.digest(), hashlib.sha512) # Criptografia da assinatura no formato base64 utilizado no valor da API-Signapi_signature = base64.b64encode(api_hmac.digest()) # Requisição HTTP (POST)api_request = urllib.request.Request('https://api.kraken.com/0/private/GetWebSocketsToken', api_post.encode('utf-8'))api_request.add_header('API-Key', api_key)api_request.add_header('API-Sign', api_signature)api_response = urllib.request.urlopen(api_request).read().decode()# Saída da resposta da APIprint(json.loads(api_response)['result']['token'])
As variáveis de chave pública/privada de API (api_key e api_secret) devem ser substituídas por uma nova chave de API de sua conta Kraken, após a qual o código pode ser usado para recuperar um token de autenticação WebSocket para a mesma conta. Observe que a chave de API deve ter a permissão Other -> Access WebSockets API habilitada.