בקשה לצפייה בשידור רושמת סשן לאירוע שמשודר בשידור חי. פרטים נוספים זמינים במאמר שליחת בקשה לשידור
בדף הזה מוסבר איך משתמשים באסימון HMAC כדי לאמת את בקשות הסטרימינג.
לפני שמתחילים
לפני שממשיכים, צריך:
- מבצעים את הדרישות המוקדמות.
- בחשבון Google Ad Manager, מפעילים את האפשרות יצירת מפתחות אימות לשידור לאירוע השידור החי. אם משתמשים באימות באמצעות טוקן, צריך להשתמש במפתח.
יצירת טוקן HMAC
כדי ליצור אסימון:
- אוספים את מפתח הנכס ואת זמן התפוגה של השידור החי. מידע נוסף זמין במאמר בנושא הפעלת אימות לבקשות ליצירת סשנים של סטרימינג של DAI
ממיינים את הפרמטרים הבאים לפי סדר אלפביתי ומפרידים ביניהם באמצעות התו
~:event=ASSET_KEY~exp=EXPIRATIONמחליפים את מה שכתוב בשדות הבאים:
ASSET_KEY: חובה. מפתח הנכס של האירוע בשידור חי.EXPIRATION: חובה. חותמת הזמן של התפוגה של האסימון בפורמט Unix epoch time.
מחשבים גיבוב (hash) 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>