Una solicitud de transmisión registra una sesión para un evento de transmisión en vivo. Para obtener más información, consulta Realiza una solicitud de transmisión.
En esta página, se explica cómo usar el token HMAC para autenticar las solicitudes de transmisión.
Antes de comenzar
Antes de continuar, haz lo siguiente:
- Completa los requisitos.
- En tu cuenta de Google Ad Manager, habilita Claves de autenticación para crear transmisiones para tu evento de transmisión en vivo. Si usas la autenticación de tokens, se requiere la clave.
Genera un token HMAC
Para generar un token, haz lo siguiente:
- Reúne la clave del recurso y la hora de vencimiento de tu transmisión en vivo. Para obtener más información, consulta Habilita la autenticación para las solicitudes de creación de sesiones de transmisión de DAI
Ordena los siguientes parámetros alfabéticamente y sepáralos con el carácter de tilde
~:event=ASSET_KEY~exp=EXPIRATIONReemplaza lo siguiente:
ASSET_KEY: Obligatorio. Es la clave del recurso del evento de transmisión en vivo.EXPIRATION: Obligatorio. Es la marca de tiempo de vencimiento del token en tiempo de época de Unix.
Calcula un hash SHA-256 de la cadena de token con tu clave de autenticación de DAI.
Da formato a la salida del hash en hexadecimal.
Para firmar la cadena de token, agrega la firma al final de los parámetros recopilados anteriormente:
event=...~hmac=HMAC_SIGNATUREReemplaza
HMAC_SIGNATUREpor la firma que generaste mediante el hash de la cadena de token con tu clave de autenticación de DAI.Para pasar la cadena de token firmada de forma segura, aplica la codificación de URL a la cadena de token firmada.
En el siguiente ejemplo, se firma y codifica una cadena de token que vence en 60 segundos:
# Add 60 seconds to the current time
future_epoch=$((EPOCHSECONDS + 60))
echo "Current: $EPOCHSECONDS"
echo "Future: $future_epoch"
# Current: 1767389133
# Future: 1767389193
# Sample DAI stream authentication key
key="DE0E9..."
# Sort parameters in the token string
token="event=YRB0Bl0oQRCb5J-maPpJUQ~exp=1767389193"
# Generate the token's signature.
echo -n $token | openssl dgst -sha256 -mac HMAC -macopt key:$key
# SHA2-256(stdin)= 9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248
# Sign the token: event=YRB0Bl0oQRCb5J-maPpJUQ~exp=1767389193~hmac=9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248
# Encode the token: event%3DYRB0Bl0oQRCb5J%2DmaPpJUQ%7Eexp%3D1767389193%7Ehmac%3D9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248
Usa el token HMAC para solicitar una sesión de transmisión en vivo
Para autenticar tu solicitud de creación de transmisión con un token HMAC, realiza una de las siguientes acciones:
Encabezado de la solicitud Authorization
curl "https://dai.google.com/linear/v1/hls/event/YRB0Bl0oQRCb5J-maPpJUQ/stream" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: DCLKDAI token=event%3DYRB0Bl0oQRCb5J%2DmaPpJUQ%7Eexp%3D1767389193%7Ehmac%3D9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248"
Parámetro de cadena de consulta
curl "https://dai.google.com/linear/v1/hls/event/YRB0Bl0oQRCb5J-maPpJUQ/stream?auth-token=event%3DYRB0Bl0oQRCb5J%2DmaPpJUQ%7Eexp%3D1767389193%7Ehmac%3D9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded"
Campo de datos del formulario
curl "https://dai.google.com/linear/v1/hls/event/YRB0Bl0oQRCb5J-maPpJUQ/stream" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "auth-token=event%3DYRB0Bl0oQRCb5J%2DmaPpJUQ%7Eexp%3D1767389193%7Ehmac%3D9935a013957e5ce893a7ee444d3d452fd0de7d273ff8b65471ddd4619b80d248"
Si se ejecuta correctamente, verás la siguiente respuesta JSON:
{
"hls_master_playlist": "https://dai.google.com/linear/hls/pa/event/YRB0Bl0oQRCb5J-maPpJUQ/stream/e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS/master.m3u8",
"media_verification_url": "https://dai.google.com/view/p/service/linear/stream/e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS/loc/DLS/network/21775744923/event/YRB0Bl0oQRCb5J-maPpJUQ/media/",
"metadata_url": "https://dai.google.com/linear/v1/pa/event/YRB0Bl0oQRCb5J-maPpJUQ/stream/e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS/metadata",
"polling_frequency": 10,
"session_update_url": "https://dai.google.com/linear/v1/pa/event/YRB0Bl0oQRCb5J-maPpJUQ/stream/e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS/session",
"stream_id": "e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS",
"stream_manifest": "https://dai.google.com/linear/hls/pa/event/YRB0Bl0oQRCb5J-maPpJUQ/stream/e91f907e-6a0a-4795-8c96-c8e36e89cbf6:DLS/master.m3u8"
}
Para comprender la estructura de la respuesta y los códigos de estado, consulta Método: stream. Si falla la autenticación, verás el siguiente error:
<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
<title>Error 401 (Unauthorized)!!1</title>
...
<a href=//www.google.com/><span id=logo aria-label=Google></span></a>
<p><b>401.</b> <ins>That’s an error.</ins>
<p><ins>That’s all we know.</ins>