स्ट्रीम सेशन के अनुरोधों की पुष्टि करना

स्ट्रीम करने का अनुरोध करने पर, लाइव स्ट्रीम इवेंट के लिए एक सेशन रजिस्टर होता है. ज़्यादा जानकारी के लिए, स्ट्रीम करने का अनुरोध करना लेख पढ़ें

इस पेज पर, स्ट्रीम के अनुरोधों की पुष्टि करने के लिए एचएमएसी टोकन का इस्तेमाल करने के बारे में बताया गया है.

शुरू करने से पहले

जारी रखने से पहले, यह काम करें:

  • ज़रूरी शर्तें पूरी करें.
  • अपने Google Ad Manager खाते में जाकर, लाइव स्ट्रीम इवेंट के लिए स्ट्रीम बनाने के लिए पुष्टि करने वाले कुकी चालू करें. अगर टोकन की पुष्टि करने की सुविधा का इस्तेमाल किया जाता है, तो कुंजी ज़रूरी है.

HMAC टोकन जनरेट करना

टोकन जनरेट करने के लिए, यह तरीका अपनाएं:

  1. अपनी लाइव स्ट्रीम की ऐसेट कुंजी और समयसीमा खत्म होने का समय इकट्ठा करें. ज़्यादा जानकारी के लिए, डीएआई स्ट्रीम सेशन बनाने के अनुरोधों के लिए पुष्टि करने की सुविधा चालू करना लेख पढ़ें
  2. यहां दिए गए पैरामीटर को अंग्रेज़ी वर्णमाला के क्रम में लगाएं और पैरामीटर को टिल्ड ~ वर्ण से अलग करें:

    event=ASSET_KEY~exp=EXPIRATION
    

    इनकी जगह ये डालें:

    • ASSET_KEY: ज़रूरी है. लाइव स्ट्रीम इवेंट की ऐसेट कुंजी.
    • EXPIRATION: ज़रूरी है. यूनिक्स ईपॉक टाइम में, टोकन की समयसीमा खत्म होने का टाइमस्टैंप.
  3. अपनी DAI पुष्टि करने वाले पासकोड का इस्तेमाल करके, टोकन स्ट्रिंग का SHA-256 हैश कैलकुलेट करें.

  4. हैश आउटपुट को हेक्साडेसिमल फ़ॉर्मैट में दिखाओ.

  5. टोकन स्ट्रिंग पर हस्ताक्षर करने के लिए, पहले से इकट्ठा किए गए पैरामीटर के आखिर में सिग्नेचर जोड़ें:

    event=...~hmac=HMAC_SIGNATURE
    

    HMAC_SIGNATURE की जगह, उस हस्ताक्षर का इस्तेमाल करें जिसे आपने DAI ऑथेंटिकेशन कुंजी का इस्तेमाल करके, टोकन स्ट्रिंग को हैश करके जनरेट किया है.

  6. साइन किए गए टोकन स्ट्रिंग को सुरक्षित तरीके से पास करने के लिए, साइन किए गए टोकन स्ट्रिंग पर यूआरएल-कोडिंग लागू करें.

यहां एक उदाहरण दिया गया है, जिसमें 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

लाइव स्ट्रीम सेशन का अनुरोध करने के लिए, एचएमएसी टोकन का इस्तेमाल करना

एचएमएसी टोकन की मदद से, स्ट्रीम बनाने के अनुरोध की पुष्टि करने के लिए, इनमें से कोई एक तरीका अपनाएं:

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"
  }

जवाब के स्ट्रक्चर और स्टेटस कोड को समझने के लिए, तरीका: स्ट्रीम देखें. पुष्टि न होने पर, आपको यह गड़बड़ी दिखेगी:

  <!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>