درخواست‌های جلسه پخش زنده را تأیید کنید

درخواست پخش زنده، یک جلسه (session) را برای یک رویداد پخش زنده ثبت می‌کند. برای جزئیات بیشتر، به «درخواست پخش زنده» مراجعه کنید.

این صفحه نحوه استفاده از توکن HMAC برای احراز هویت درخواست‌های استریم را پوشش می‌دهد.

قبل از اینکه شروع کنی

قبل از ادامه، موارد زیر را انجام دهید:

  • پیش‌نیازها را تکمیل کنید.
  • در حساب Google Ad Manager خود، گزینه‌ی «ایجاد کلیدهای احراز هویت برای رویداد پخش زنده» در استریم را فعال کنید. اگر از احراز هویت توکن استفاده می‌کنید، این کلید الزامی است.

یک توکن HMAC ایجاد کنید

برای تولید توکن، مراحل زیر را انجام دهید:

  1. کلید دارایی و زمان انقضای پخش زنده خود را جمع‌آوری کنید. برای اطلاعات بیشتر، به فعال کردن احراز هویت برای درخواست‌های ایجاد جلسات پخش DAI مراجعه کنید.
  2. پارامترهای زیر را به ترتیب حروف الفبا مرتب کنید و پارامترها را با کاراکتر ~ از هم جدا کنید:

    event=ASSET_KEY~exp=EXPIRATION
    

    موارد زیر را جایگزین کنید:

    • ASSET_KEY : الزامی. کلید دارایی رویداد پخش زنده.
    • EXPIRATION : الزامی. مهر زمان انقضای توکن در زمان عصر یونیکس.
  3. با استفاده از کلید احراز هویت DAI خود، هش SHA-256 رشته توکن را محاسبه کنید.

  4. خروجی هش را به صورت هگزادسیمال قالب‌بندی کنید.

  5. برای امضای رشته توکن، امضا را به انتهای پارامترهای جمع‌آوری‌شده قبلی اضافه کنید:

    event=...~hmac=HMAC_SIGNATURE
    

    HMAC_SIGNATURE با امضایی که با هش کردن رشته توکن با استفاده از کلید احراز هویت DAI خود ایجاد کرده‌اید، جایگزین کنید.

  6. برای ارسال ایمن رشته توکن امضا شده، کدگذاری 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"
  }

برای درک ساختار پاسخ و کدهای وضعیت، به Method: 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>