BitBook

Lite

Crea una cuenta gratis

🍪 Usamos cookies!

Aceptar Más información

Ha ocurrido un error al intentar activar las notificaciones. Por favor, recarga la página.

Cerrar Recargar

Recibir notificaciones

¿Deseas recibir notificaciones de BitBook Lite?

Descarga la aplicación

Descarga la aplicación móvil de BitBook Lite para obtener una mejor experiencia en tu dispositivo.

Hola, mundo

Mensaje largo...

Haz click en la pantalla para cerrar

Nuevo post

Publicar
Cargando...

Categorías del post

Cargando...

Aquí debería haber un mensaje...

Aquí debería haber un mensaje...

Descartar Aceptar

Guardar y cerrar

Normal

Claro

Noche

Noche clara

Sepia

Cargando...

Time Access Token (TAT)

Documentación para desarrolladores


¿Qué es el Time Access Token (TAT)?

Un Time Access Token (o TAT por sus siglas) es una credencial de acceso a la API de BitBook Lite que algunos métodos requieren para acceder a ellos.
El Time Access Token es un token hash basado en tiempo que se genera con la Time Access Token Password (o TATP por sus siglas) y cambia cada 30 segundos.
Es una medida adicional de seguridad para métodos sensibles de la API de BitBook Lite.

¿Cómo puedo generar un Time Access Token (TAT)?

Para los métodos que requieren el envío de un TAT, deberás generar tu TAT actual con tu TATP que encontrarás en la sección de credenciales API de tu cuenta.
A continuación verás el procedimiento para generar un TAT con tu TATP.

Procedimiento de generación del TAT actual

  1. Obtener la marca de tiempo UNIX actual en segundos.
  2. Dividir la marca de tiempo UNIX entre el intervalo, que es igual a 30.
  3. Redondear el resultado y multiplicarlo por el intervalo, que es igual a 30.
  4. Crear una cadena de texto concatenando estos tres valores: tu TATP + "+" + el número obtenido en el punto anterior.
  5. Codificar la cadena de texto resultante en sha256.
  6. El hash resultante es tu TAT actual.

¿Cómo envío el TAT en una consulta API?

Debes enviar tu TAT actual en el campo "api_credentials_tat" por el método POST de la consulta.

Ejemplos de generación de TAT

Pseudocódigo - Generar el TAT actual

interval = 30 password = '000000-wWEjGo-000000-drVbAf-000000-RLmtWV' curr_time = getUnixTimeInSeconds() multiplier = round(curr_time / interval) mult_time = multiplier * interval decoded_tat = password + '+' + mult_time current_tat = sha256(decoded_tat)

PHP - Clase principal

class TimeAccessToken { // Time Access Token (TAT) public $interval = 30; public $password; function __construct($interval, $password){ if ($interval > 0 AND !empty($password)) { $this->interval = $interval; $this->password = $password; return true; } else { throw new Exception('TimeAccessToken ERROR: $interval must be higher than zero and $password must be not empty.'); return false; } } public function getToken($regression=0){ $curr_time = time(); $multiplier = round($curr_time / $this->interval); $mult_time = $multiplier * $this->interval; $mult_time = $mult_time - ($regression * $this->interval); $decoded_tat = $this->password . '+' . $mult_time; $hash = hash('sha256', $decoded_tat); return $hash; } public function verifyToken($token, $allowed_regressions=0){ $result = false; for ($i=0; $i <= $allowed_regressions; $i++) { $iToken = $this->getToken($i); if ($iToken === $token) { $result = true; continue; } } return $result; } }

PHP - Generar el TAT actual

$interval = 30; $password = '000000-wWEjGo-000000-drVbAf-000000-RLmtWV'; $TATClass = new TimeAccessToken($interval, $password); $current_tat = $TATClass->getToken();

JavaScript - Generar el TAT actual

async function generateTAT(interval, password) { var curr_time = Math.floor(Date.now() / 1000); var multiplier = Math.round(curr_time / interval); var mult_time = multiplier * interval; var decoded_tat = password + '+' + mult_time; const encoder = new TextEncoder(); const data = encoder.encode(decoded_tat); const hashBuffer = await crypto.subtle.digest('SHA-256', data); const hashArray = Array.from(new Uint8Array(hashBuffer)); const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join(''); return hashHex; } var interval = 30; var password = '000000-wWEjGo-000000-drVbAf-000000-RLmtWV'; var current_tat = await generateTAT(interval, password);

Volver atrás