Запрос на трансляцию регистрирует сессию для участия в прямой трансляции. Подробнее см. в разделе «Отправка запроса на трансляцию».
На этой странице рассматривается использование HMAC-токена для аутентификации запросов потока.
Прежде чем начать
Прежде чем продолжить, выполните следующие действия:
- Выполните необходимые предварительные условия .
- В своем аккаунте Google Ad Manager включите функцию создания ключей аутентификации для вашей прямой трансляции. Если вы используете аутентификацию по токену, ключ будет обязательным.
Сгенерировать токен HMAC
Для генерации токена выполните следующие действия:
- Получите ключ доступа к ресурсу вашей прямой трансляции и время истечения срока действия. Для получения дополнительной информации см. раздел «Включение аутентификации для запросов на создание сеансов потоковой передачи DAI».
Отсортируйте следующие параметры в алфавитном порядке, разделяя их символом тильды
~:event=ASSET_KEY~exp=EXPIRATIONЗамените следующее:
-
ASSET_KEY: Обязательно. Ключ ресурса события прямой трансляции. -
EXPIRATION: Обязательно. Метка времени истечения срока действия токена в формате Unix epoch.
-
Вычислите хеш SHA-256 строки токена, используя ваш ключ аутентификации DAI .
Вывод хеша должен быть представлен в шестнадцатеричном формате.
Для подписи строки токена добавьте подпись в конец параметров, собранных ранее:
event=...~hmac=HMAC_SIGNATUREЗамените
HMAC_SIGNATUREна подпись, которую вы сгенерировали, хешируя строку токена с помощью вашего ключа аутентификации DAI.Для безопасной передачи строки подписанного токена примените URL-кодирование к этой строке.
В следующем примере выполняется подпись и кодирование строки токена, срок действия которого истекает через 60 секунд:
# 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
Используйте токен HMAC для запроса сеанса прямой трансляции.
Для аутентификации запроса на создание потока с помощью токена HMAC выполните одно из следующих действий:
Заголовок запроса 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"
Параметр строки запроса
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"
Поле данных формы
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"
В случае успеха вы увидите следующий 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"
}
Чтобы понять структуру ответа и коды состояния, см. Метод: stream . Если аутентификация не удалась, вы увидите следующую ошибку:
<!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>