Yêu cầu luồng sẽ đăng ký một phiên cho sự kiện phát trực tiếp. Để biết thông tin chi tiết, hãy xem bài viết Tạo yêu cầu luồng
Trang này trình bày cách sử dụng mã thông báo HMAC để xác thực các yêu cầu luồng.
Trước khi bắt đầu
Trước khi tiếp tục, hãy làm như sau:
- Hoàn tất các điều kiện tiên quyết.
- Trong tài khoản Google Ad Manager, hãy bật Khoá xác thực tạo luồng cho sự kiện phát trực tiếp. Nếu bạn sử dụng phương thức xác thực bằng mã thông báo, thì bắt buộc phải có khoá.
Tạo mã thông báo HMAC
Để tạo mã thông báo, hãy làm như sau:
- Thu thập khoá thành phần và thời gian hết hạn của sự kiện phát trực tiếp. Để biết thêm thông tin, hãy xem Bật tính năng xác thực cho các yêu cầu tạo phiên luồng Chèn quảng cáo động
Sắp xếp các tham số sau theo bảng chữ cái và phân tách các tham số bằng ký tự dấu ngã
~:event=ASSET_KEY~exp=EXPIRATIONThay thế nội dung sau:
ASSET_KEY: Bắt buộc. Khoá thành phần của sự kiện phát trực tiếp.EXPIRATION: Bắt buộc. Dấu thời gian hết hạn của mã thông báo theo thời gian bắt đầu của hệ thống Unix.
Tính toán giá trị băm SHA-256 của chuỗi mã thông báo bằng khoá xác thực Chèn quảng cáo động.
Định dạng đầu ra băm ở dạng thập lục phân.
Để ký chuỗi mã thông báo, hãy thêm chữ ký vào cuối các tham số đã thu thập trước đó:
event=...~hmac=HMAC_SIGNATUREThay thế
HMAC_SIGNATUREbằng chữ ký mà bạn đã tạo bằng cách băm chuỗi mã thông báo bằng khoá xác thực Chèn quảng cáo động.Để truyền chuỗi mã thông báo đã ký một cách an toàn, hãy áp dụng phương thức mã hoá URL cho chuỗi mã thông báo đã ký.
Ví dụ sau đây ký và mã hoá một chuỗi mã thông báo hết hạn trong vòng 60 giây:
# 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
Sử dụng mã thông báo HMAC để yêu cầu một phiên phát trực tiếp
Để xác thực yêu cầu tạo luồng bằng mã thông báo HMAC, hãy làm theo một trong những cách sau:
Tiêu đề của yêu cầu 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"
Tham số chuỗi truy vấn
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"
Trường dữ liệu biểu mẫu
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"
Nếu thành công, bạn sẽ thấy phản hồi JSON sau:
{
"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"
}
Để hiểu cấu trúc phản hồi và mã trạng thái, hãy xem bài viết Phương thức: stream. Nếu quá trình xác thực không thành công, bạn sẽ thấy lỗi sau:
<!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>