يسجّل طلب البث جلسة جديدة لحدث بث مباشر. لمزيد من المعلومات، يُرجى الاطّلاع على تقديم طلب بث.
تتناول هذه الصفحة استخدام الرمز المميز المستند إلى HMAC لمصادقة طلبات البث.
قبل البدء
- أكمِل المتطلبات الأساسية.
- تأكَّد من تفعيل مفاتيح مصادقة إنشاء البث في حدث البث المباشر ضمن حسابك على "مدير إعلانات Google".
إنشاء رمز مميّز HMAC
لإنشاء رمز مميّز، اتّبِع الخطوات التالية:
- اجمع مَعلمات المسار والاستعلام المطلوبة لطلب جلسة البث. للاطّلاع على القائمة الكاملة، يُرجى الرجوع إلى الطريقة: stream.
اجمع بين سلاسل مفاتيح المَعلمات وقيمها. يجب ترتيب المَعلمات أبجديًا وفصلها باستخدام الرمز
~، على سبيل المثال:custom_asset_key=CUSTOM_ASSET_KEY~exp=EXPIRATION~network_code=NETWORK_CODEغيِّر القيم في السلسلة على الشكل التالي:
CUSTOM_ASSET_KEY: مطلوب. مفتاح مواد العرض المخصّص لحدث البث المباشرEXPIRATION: مطلوب. الطابع الزمني لانتهاء صلاحية الرمز المميّز بتوقيت حقبة UnixNETWORK_CODE: مطلوب. معرِّف شبكة حسابك على "مدير إعلانات Google"
احتسِب قيمة تجزئة SHA-256 لسلسلة الرمز المميّز باستخدام مفتاح مصادقة DAI.
يجب تنسيق ناتج التجزئة بتنسيق سداسي عشري.
لتوقيع سلسلة الرموز المميّزة، أضِف التوقيع في نهاية المَعلمات التي تم جمعها سابقًا:
custom_asset_key=...~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: 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>