Yayın isteği, canlı yayın etkinliği için bir oturum kaydeder. Ayrıntılı bilgi için Yayın isteğinde bulunma başlıklı makaleyi inceleyin.
Bu sayfada, akış isteklerinin kimliğini doğrulamak için HMAC jetonunun kullanılması ele alınmaktadır.
Başlamadan önce
Devam etmeden önce aşağıdakileri yapın:
- Ön koşulları tamamlayın.
- Google Ad Manager hesabınızda canlı yayın etkinliğiniz için Akış oluşturma kimlik doğrulama anahtarlarını etkinleştirin. Jeton kimlik doğrulaması kullanıyorsanız anahtar gereklidir.
HMAC jetonu oluşturma
Jeton oluşturmak için aşağıdakileri yapın:
- Canlı yayınınızın öğe anahtarını ve geçerlilik bitiş zamanını toplayın. Daha fazla bilgi için DAI akış oturumları oluşturma istekleri için kimlik doğrulamayı etkinleştirme başlıklı makaleyi inceleyin.
Aşağıdaki parametreleri alfabetik olarak sıralayın ve parametreleri tilde
~karakteriyle ayırın:event=ASSET_KEY~exp=EXPIRATIONAşağıdakini değiştirin:
ASSET_KEY: Zorunlu. Canlı yayın etkinliğinin öğe anahtarı.EXPIRATION: Zorunlu. Jetonun geçerlilik bitiş zaman damgası (Unix sıfır zamanı).
DAI kimlik doğrulama anahtarınızı kullanarak jeton dizesinin SHA-256 karmasını hesaplayın.
Karma çıkışını onaltılık biçimde biçimlendirin.
Jeton dizesini imzalamak için daha önce toplanan parametrelerin sonuna imzayı ekleyin:
event=...~hmac=HMAC_SIGNATUREHMAC_SIGNATUREyerine, jeton dizesini DAI kimlik doğrulama anahtarınızla karma oluşturarak ürettiğiniz imzayı girin.İmzalı jeton dizesini güvenli bir şekilde iletmek için imzalı jeton dizesine URL kodlaması uygulayın.
Aşağıdaki örnek, 60 saniye içinde sona eren bir jeton dizesini imzalar ve kodlar:
# 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
Canlı yayın oturumu istemek için HMAC jetonunu kullanma
Akış oluşturma isteğinizin kimliğini HMAC jetonuyla doğrulamak için aşağıdakilerden birini yapın:
Authorization istek başlığı
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"
Sorgu dizesi parametresi
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"
Form veri alanı
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"
İşlem başarılı olursa aşağıdaki JSON yanıtını görürsünüz:
{
"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"
}
Yanıt yapısını ve durum kodlarını anlamak için Yöntem: stream başlıklı makaleyi inceleyin. Kimlik doğrulama başarısız olursa aşağıdaki hatayı görürsünüz:
<!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>