مصادقة طلبات جلسات البث

يسجّل طلب البث جلسة جديدة لحدث بث مباشر. لمزيد من المعلومات، يُرجى الاطّلاع على تقديم طلب بث.

تتناول هذه الصفحة استخدام الرمز المميز المستند إلى HMAC لمصادقة طلبات البث.

قبل البدء

إنشاء رمز مميّز HMAC

لإنشاء رمز مميّز، اتّبِع الخطوات التالية:

  1. اجمع مَعلمات المسار والاستعلام المطلوبة لطلب جلسة البث. للاطّلاع على القائمة الكاملة، يُرجى الرجوع إلى الطريقة: stream.
  2. اجمع بين سلاسل مفاتيح المَعلمات وقيمها. يجب ترتيب المَعلمات أبجديًا وفصلها باستخدام الرمز ~، على سبيل المثال:

    custom_asset_key=CUSTOM_ASSET_KEY~exp=EXPIRATION~network_code=NETWORK_CODE
    

    غيِّر القيم في السلسلة على الشكل التالي:

    • CUSTOM_ASSET_KEY: مطلوب. مفتاح مواد العرض المخصّص لحدث البث المباشر
    • EXPIRATION: مطلوب. الطابع الزمني لانتهاء صلاحية الرمز المميّز بتوقيت حقبة Unix
    • NETWORK_CODE: مطلوب. معرِّف شبكة حسابك على "مدير إعلانات Google"
  3. احتسِب قيمة تجزئة SHA-256 لسلسلة الرمز المميّز باستخدام مفتاح مصادقة DAI.

  4. يجب تنسيق ناتج التجزئة بتنسيق سداسي عشري.

  5. لتوقيع سلسلة الرموز المميّزة، أضِف التوقيع في نهاية المَعلمات التي تم جمعها سابقًا:

    custom_asset_key=...~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: 1774478306
# Future: 1774478366

# Sample DAI stream authentication key
key="DE0E9..."

# Sort parameters in the token string
token="custom_asset_key=hls-pod-serving-redirect-auth-stream-pod~exp=1774478366~network_code=21775744923"

# Generate the token's signature.
echo -n $token | openssl dgst -sha256 -mac HMAC -macopt key:$key
# SHA2-256(stdin)= 17cdf7079b735320dbc66e4c9d677ae0380fb0ef3cf9ce90fdd55d0667574365

# Sign the token: custom_asset_key=hls-pod-serving-redirect-auth-stream-pod~exp=1774478366~network_code=21775744923~hmac=17cdf7079b735320dbc66e4c9d677ae0380fb0ef3cf9ce90fdd55d0667574365

# Encode the token: custom_asset_key%3Dhls-pod-serving-redirect-auth-stream-podexp%3D1774478366network_code%3D21775744923~hmac%3D17cdf7079b735320dbc66e4c9d677ae0380fb0ef3cf9ce90fdd55d0667574365

استخدام رمز HMAC المميز لطلب جلسة بث مباشر

للمصادقة على طلب إنشاء البث باستخدام رمز مميّز يستند إلى HMAC، اتّبِع أحد الإجراءات التالية:

HLS

عنوان طلب Authorization

curl "https://dai.google.com/ssai/pods/api/v1/network/21775744923/custom_asset/hls-pod-serving-redirect-auth-stream-pod/stream" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: DCLKDAI token=custom_asset_key%3Dhls-pod-serving-redirect-auth-stream-podexp%3D1774478366network_code%3D21775744923~hmac%3D17cdf7079b735320dbc66e4c9d677ae0380fb0ef3cf9ce90fdd55d0667574365"

مَعلمة سلسلة طلب البحث

curl "https://dai.google.com/ssai/pods/api/v1/network/21775744923/custom_asset/hls-pod-serving-redirect-auth-stream-pod/stream?auth-token=custom_asset_key%3Dhls-pod-serving-redirect-auth-stream-podexp%3D1774478366network_code%3D21775744923~hmac%3D17cdf7079b735320dbc66e4c9d677ae0380fb0ef3cf9ce90fdd55d0667574365" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded"

حقل بيانات النموذج

curl "https://dai.google.com/ssai/pods/api/v1/network/21775744923/custom_asset/hls-pod-serving-redirect-auth-stream-pod/stream" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "auth-token=custom_asset_key%3Dhls-pod-serving-redirect-auth-stream-podexp%3D1774478366network_code%3D21775744923~hmac%3D17cdf7079b735320dbc66e4c9d677ae0380fb0ef3cf9ce90fdd55d0667574365"

في حال نجاح العملية، ستظهر لك استجابة JSON التالية:

{
"stream_id":"6299a01b-450d-4879-a5c8-fe3cf2188aee:CBF2",
"media_verification_url":"https://dai.google.com/view/p/service/linear/stream/6299a01b-450d-4879-a5c8-fe3cf2188aee:CBF2/loc/CBF2/network/21775744923/event/C5BT3czhT2Sc7OIbM8ibqA/media/","metadata_url":"https://dai.google.com/linear/pods/hls/pa/event/C5BT3czhT2Sc7OIbM8ibqA/stream/6299a01b-450d-4879-a5c8-fe3cf2188aee:CBF2/metadata",
"session_update_url":"https://dai.google.com/linear/v1/pa/event/C5BT3czhT2Sc7OIbM8ibqA/stream/6299a01b-450d-4879-a5c8-fe3cf2188aee:CBF2/session",
"polling_frequency":10
}

لفهم بنية الاستجابة ورموز الحالة، يُرجى الرجوع إلى الطريقة: 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>s

DASH

عنوان طلب Authorization

curl "https://dai.google.com/ssai/pods/api/v1/network/21775744923/custom_asset/dash-pod-serving-redirect-auth-stream-pod/stream"\
-X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: DCLKDAI token=custom_asset_key%3Ddash-pod-serving-redirect-auth-stream-podexp%3D1772817105network_code%3D21775744923~hmac%3Dc7e10f51f544610cdda28fdee903472839bf1154701ae371c0196d8f63c8bdda"

مَعلمة سلسلة طلب البحث

curl "https://dai.google.com/ssai/pods/api/v1/network/21775744923/custom_asset/dash-pod-serving-redirect-auth-stream-pod/stream?auth-token=custom_asset_key%3Ddash-pod-serving-redirect-auth-stream-podexp%3D1772817105network_code%3D21775744923~hmac%3Dc7e10f51f544610cdda28fdee903472839bf1154701ae371c0196d8f63c8bdda" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded"

حقل بيانات النموذج

curl "https://dai.google.com/ssai/pods/api/v1/network/21775744923/custom_asset/dash-pod-serving-redirect-auth-stream-pod/stream" \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "auth-token=custom_asset_key%3Ddash-pod-serving-redirect-auth-stream-podexp%3D1772817105network_code%3D21775744923~hmac%3Dc7e10f51f544610cdda28fdee903472839bf1154701ae371c0196d8f63c8bdda"

في حال نجاح العملية، ستظهر لك استجابة JSON التالية:

{
"stream_id": "e66568dc-cb5c-4859-b645-e12d9b5b821b:ATL",
"media_verification_url": "https://dai.google.com/view/p/service/linear/stream/e66568dc-cb5c-4859-b645-e12d9b5b821b:ATL/loc/ATL/network/21775744923/event/YMTFNxBxTR66kFv-krZHcQ/media/",
"metadata_url": "https://dai.google.com/linear/pods/dash/pa/event/YMTFNxBxTR66kFv-krZHcQ/stream/e66568dc-cb5c-4859-b645-e12d9b5b821b:ATL/metadata",
"session_update_url": "https://dai.google.com/linear/v1/pa/event/YMTFNxBxTR66kFv-krZHcQ/stream/e66568dc-cb5c-4859-b645-e12d9b5b821b:ATL/session",
"polling_frequency": 10,
"pod_manifest_url": "https://dai.google.com/linear/pods/v1/dash/event/YMTFNxBxTR66kFv-krZHcQ/stream/e66568dc-cb5c-4859-b645-e12d9b5b821b:ATL/pod/$pod-id$/manifest.mpd",
"manifest_format": "dash"
}

لفهم بنية الاستجابة ورموز الحالة، يُرجى الرجوع إلى الطريقة: 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>