Como recuperar um token de autenticação WebSocket - Exemplo de código em Python 3

Última atualização: 1 de abr. de 2025

Os feeds privados da nossa API WebSocket (como o feed openOrders e o feed addOrder) exigem um token de autenticação do endpoint GetWebSocketsToken da API REST.

A seguir, um exemplo de código Python 3 para chamar o endpoint GetWebSocketsToken da API REST, analisar a resposta JSON e gerar o novo token de autenticação WebSocket:

#!/usr/bin/env python3

# Importar bibliotecas Python necessárias
import time
import base64
import hashlib
import hmac
import urllib.request
import json

# Copie/cole a chave pública da API e a chave privada da API conforme exibido no gerenciamento da conta
api_key = 'COPY/PASTE API PUBLIC KEY HERE'
api_secret = 'COPY/PASTE API PRIVATE KEY HERE'

# 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

# Algoritmos de hash criptográficos
api_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)

# Codificar assinatura no formato base64 usado no valor API-Sign
api_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 API
print(json.loads(api_response)['result']['token'])

As variáveis de chave pública/privada da API (api_key e api_secret) devem ser substituídas por uma nova chave de API da sua conta Kraken, após o que 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 Outros -> Acessar API WebSockets ativada.

Precisa de mais ajuda?