Người dùng thích xem hoặc nghe nội dung mà họ có thể truy cập, chẳng hạn như nội dung hiện có trong gói thuê bao. Nếu Google biết người dùng có thể truy cập vào nội dung nào trên ứng dụng hoặc nền tảng của bạn, thì Google có thể tạo một kết quả tìm kiếm hoặc phản hồi tốt hơn để hướng người dùng đến nội dung đó.

Xác định các yêu cầu về quyền truy cập nội dung
Bạn phải xác định yêu cầu về quyền truy cập cho từng gói nội dung trong danh mục của mình. Khi làm như vậy, hãy cân nhắc những câu hỏi sau:
- Người dùng có cần đăng nhập vào ứng dụng hoặc nền tảng của bạn để truy cập nội dung không?
Người dùng có cần gói thuê bao không?
Chỉ dành cho Hành động xem:
- Người dùng có cần gói thuê bao của nhà cung cấp dịch vụ bên ngoài không?
- Bạn có cung cấp gói thuê bao theo bậc, nhiều gói hay gói bổ sung không?
Chỉ có Hành động xem: Người dùng có cần thuê hoặc mua nội dung không?
Yêu cầu về quyền truy cập có thay đổi theo thời gian không?
Yêu cầu về quyền truy cập có phụ thuộc vào vị trí của thiết bị không?
Các loại quy định hạn chế quyền truy cập
Có hai loại hạn chế truy cập:
Loại tường phí
Bạn có thể hạn chế quyền truy cập vào nội dung theo loại tường phí. Bảng sau đây trình bày chi tiết các loại tường phí:
Loại tường phí | Ví dụ: | Danh mục |
---|---|---|
Bạn không cần mua hàng hay đăng nhập. | Crackle | nologinrequired |
Người dùng phải đăng nhập nhưng không cần có gói thuê bao có tính phí. | Vudu (AVOD) | free |
Người dùng phải có gói thuê bao đang hoạt động. Quyền truy cập không phụ thuộc vào cấp gói thuê bao. | Netflix |
|
Người dùng phải có gói thuê bao đang hoạt động. Quyền truy cập phụ thuộc vào cấp gói thuê bao. | Hulu (tiện ích bổ sung) |
|
Nội dung có thể xem trong một khoảng thời gian nhất định sau khi mua. | Vudu | rental |
Bạn có thể xem nội dung này trong một khoảng thời gian không xác định sau khi mua. | Vudu | purchase |
Nội dung này được cung cấp theo gói thuê bao truyền hình cáp. | HBO Go | externalSubscription |
Loại tường phí cho Hành động xem
Để chỉ định loại tường phí nội dung cho Hành động trên YouTube, hãy sử dụng thuộc tính category
trong Thông số kỹ thuật về quyền truy cập vào hành động:
"potentialAction": {
"@type":"WatchAction",
"target": { … },
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
},
...
}
Loại tường phí cho Hành động nghe
Để chỉ định loại tường phí nội dung cho Hành động nghe, hãy sử dụng thuộc tính category
trong đối tượng ưu đãi:
"potentialAction": {
"@type":"ListenAction",
"target": { … },
"expectsAcceptanceOf":{
"@type":"Offer",
"category":"subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type":"Country",
"name":"US"
}
},
...
}
Khu vực địa lý
Bạn phải chỉ định các khu vực địa lý nơi nội dung được cung cấp. Sử dụng một hoặc cả hai thuộc tính sau:
- Thuộc tính
eligibleRegion
của đối tượng Action access specification (Thông số kỹ thuật về quyền truy cập vào hành động). Thuộc tính này là bắt buộc. - Thuộc tính
ineligibleRegion
của đối tượng Action access specification (Thông số kỹ thuật về quyền truy cập vào hành động).
Người dùng có thể truy cập nội dung nếu vị trí thiết bị nằm trong bất kỳ khu vực nào được chỉ định trong eligibleRegion
và không nằm trong bất kỳ khu vực nào được chỉ định trong ineligibleRegion
.
Các thuộc tính eligibleRegion
và ineligibleRegion
cho phép các giá trị sau:
- Danh sách
Country
,City
vàState
. - Một đối tượng
GeoShape
. Hãy xem phần thuộc tínhGeoShape
để biết các yêu cầu chi tiết. - Danh sách các đối tượng
GeoShape
.
Nếu nội dung có trên toàn cầu, hãy sử dụng giá trị đặc biệt sau cho eligibleRegion
:
"eligibleRegion": "EARTH",
Các trường hợp sử dụng eligibleRegion
Sau đây là ví dụ về trường hợp sử dụng của thuộc tính eligibleRegion
:
- Ví dụ 1:
eligibleRegion
có danh sách quốc gia. - Ví dụ 2:
eligibleRegion
với đối tượngGeoShape
chứa danh sách mã zip. - Ví dụ 3:
eligibleRegion
với đối tượngGeoShape
chứa danh sách mã Khu vực phân loại chuyển tiếp (FSA). - Ví dụ 4:
eligibleRegion
với đối tượngGeoShape
chứa mã DMA. - Ví dụ 5:
eligibleRegion
với danh sách các đối tượngGeoShape
. Mỗi tệp chứa một mã DMA. - Ví dụ 6:
ineligibleRegion
có mã zip bị chặn.
eligibleRegion
có danh sách quốc gia:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/north_america_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": [ { "@type": "Country", "name": "US" }, { "@type": "Country", "name": "CA" } ] }
eligibleRegion
với đối tượng GeoShape
chứa danh sách mã zip:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
eligibleRegion
với đối tượng GeoShape
chứa danh sách mã Khu vực phân loại chuyển tiếp (FSA):
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area2", "addressCountry": "CA", "postalCode": [ "1A1", "K1A" ] } }
eligibleRegion
có đối tượng GeoShape
chứa mã DMA:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/abcd/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area3", "addressCountry": "US", "identifier": [ { "@type": "PropertyValue", "propertyID": "DMA_ID", "value": "501" } ] } }
eligibleRegion
có danh sách các đối tượng GeoShape
.
Mỗi khối chứa một mã nhận dạng DMA:
"actionAccessibilityRequirement" : { "@type" : "ActionAccessSpecification", "eligibleRegion" : [ { "@id" : "http://example.com/dma/601", "@type" : "GeoShape", "addressCountry" : "US", "identifier" : { "@type" : "PropertyValue", "propertyID" : "DMA_ID", "value" : "601" } }, { "@id" : "http://example.com/dma/602", "@type" : "GeoShape", "addressCountry" : "US", "identifier" : { "@type" : "PropertyValue", "propertyID" : "DMA_ID", "value" : "602" } } ] }
ineligibleRegion
có mã bưu chính bị che:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": { "@type": "Country", "name": "US" }, "ineligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
Giá trị nhận dạng quyền
Giá trị nhận dạng quyền, entitlementId
, là một chuỗi đại diện cho quyền truy cập vào một nhóm nội dung trong danh mục nội dung nghe nhìn của bạn. Để xác định xem người dùng có quyền truy cập vào nội dung của bạn hay không, Google sẽ thực hiện các bước sau:
- Chúng tôi thực hiện lệnh gọi API đến điểm cuối về Quyền để nhận giá trị nhận dạng quyền của người dùng.
- Chúng tôi tra cứu mã nhận dạng quyền cần thiết của nội dung trong nguồn cấp dữ liệu Hành động đối với nội dung nghe nhìn.
- Chúng tôi so khớp
entitlementId
của người dùng với thuộc tínhidentifier
của đối tượng gói thuê bao nội dung nghe nhìn trong nguồn cấp dữ liệu của bạn. Nếu ít nhất mộtentitlementId
khớp, chúng ta xác định rằng người dùng có thể truy cập vào nội dung.

Bạn nên sử dụng cú pháp sau cho entitlementId
:
<domain name> + colon (:) + <access level to content>
Ví dụ về cú pháp:
example.com:basic
example.com:premium
example.com:sports
Ví dụ về mã nhận dạng quyền
Nguồn cấp dữ liệu của MediaExampleCompany chỉ định rằng Movie XYZ
yêu cầu example.com:basic
entitlementId
, như sau:
{ "@context": ["http://schema.org", {"@language": "en"}], "@type": "Movie", "@id": "www.example.com/movie_xyz", "url": "www.example.com/movie_xyz", "name": "Movie XYZ", "potentialAction": { "@type": "WatchAction", "target": [ … ], "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Basic subscription", "commonTier": true ... }, ... } }, ... }
Các trường hợp sử dụng quyền truy cập phổ biến
Sau đây là các trường hợp sử dụng quyền truy cập phổ biến:
- Miễn phí (không cần đăng nhập): Bạn có thể xem nội dung này mà không cần đăng nhập, đăng ký hoặc mua.
- Miễn phí (yêu cầu đăng nhập): Nội dung yêu cầu người dùng đăng nhập nhưng không yêu cầu gói thuê bao.
- Gói thuê bao một cấp: Nội dung yêu cầu người dùng phải có gói thuê bao. Tất cả người đăng ký đều có thể truy cập vào cùng một nội dung, dù là phim hay tập phim, bất kể gói thuê bao của họ là gì.
- Gói thuê bao nhiều cấp: Nội dung yêu cầu gói thuê bao. Người đăng ký có thể xem nhiều nội dung, dù là phim hay tập phim, tuỳ theo gói thuê bao của họ. Ví dụ: Bạc so với Vàng.
- Gói thuê bao bổ sung: Nội dung này yêu cầu gói thuê bao. Người đăng ký có thể thêm nội dung cao cấp ngoài gói thuê bao thông thường.
- Gói mua một lần: Người dùng có thể mua nội dung và sau đó có thể truy cập nội dung đó vô thời hạn.
- Truyền hình trực tiếp: Gói thuê bao bao gồm quyền truy cập vào các kênh địa phương, quốc gia và kênh cao cấp.
- Gói thuê bao của bên thứ ba: Nội dung yêu cầu người dùng đăng nhập bằng nhà cung cấp dịch vụ truyền hình cáp của họ.
Không cần đăng nhập
Người dùng có thể xem nội dung này mà không cần đăng nhập hoặc đăng ký.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Đặt
category
thànhnologinrequired
. - Không bao gồm
expectAcceptanceOf
.
Yêu cầu đăng nhập
Nội dung yêu cầu người dùng phải đăng nhập nhưng không yêu cầu gói thuê bao.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Đặt
category
thànhfree
. - Không bao gồm
expectAcceptanceOf
.
Trong mô hình thuê bao một cấp, nhà cung cấp dịch vụ có một cấp thuê bao. Tất cả người đăng ký đều có thể xem cùng một nội dung, dù là phim hay tập phim, bất kể gói thuê bao của họ là gì.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription": { "@type": "MediaSubscription", "name": "Example Package", "commonTier": true, "@id": "http://www.example.com/example_package" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
Trong mô hình thuê bao theo bậc, nhà cung cấp dịch vụ có nhiều bậc thuê bao, chẳng hạn như Vàng, Bạc và Đồng. Người dùng có gói thuê bao cấp cao hơn có thể truy cập vào tất cả nội dung cấp thấp hơn. Tuy nhiên, người dùng có gói thuê bao cấp thấp hơn không thể truy cập vào nội dung cấp cao hơn.

Hãy xem xét trường hợp sau:
- Jane đăng ký gói Vàng. Điểm cuối quyền của bạn trả về các giá trị nhận dạng
entitlementId
sau:example.com:bronze
example.com:silver
example.com:gold
- John đăng ký gói Đồng. Điểm cuối quyền của bạn sẽ trả về
entitlementId
sau:example.com:bronze
- Nguồn cấp dữ liệu Hành động trong nội dung nghe nhìn mô tả các yêu cầu sau:
- Phim A yêu cầu
example.com:bronze
. - Phim B yêu cầu
example.com:silver
.
- Phim A yêu cầu
Trong trường hợp này, Google xác định các cấp truy cập sau cho Jane và John:
- Cả Jane và John đều có quyền truy cập vào Phim A.
- Jane có quyền truy cập vào Phim B, nhưng John thì không.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
Trong mô hình thuê bao bổ sung, nhà cung cấp dịch vụ cho phép người dùng mở rộng quyền và thêm kênh vào gói thuê bao cơ bản. Người dùng có thể thêm bao nhiêu kênh tuỳ thích.

Hãy xem xét trường hợp sau:
- Jane có gói thuê bao PRO và Sportz ngoài gói Basic. Điểm cuối về quyền của bạn trả về các giá trị nhận dạng
entitlementId
sau:example.com:basic
example.com:pro
example.com:sportz
- John chỉ có gói thuê bao Cơ bản. Điểm cuối quyền của bạn sẽ trả về
entitlementId
sau:example.com:basic
- Nguồn cấp dữ liệu Hành động trong nội dung nghe nhìn mô tả các yêu cầu sau:
- Phim A yêu cầu
example.com:basic
. - Phim B yêu cầu
example.com:pro
.
- Phim A yêu cầu
Trong trường hợp này, Google xác định các cấp truy cập sau cho Jane và John:
- Cả Jane và John đều có quyền truy cập vào Phim A.
- Jane có quyền truy cập vào Phim B, nhưng John thì không.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" "requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/basic", "name": "Basic", "sameAs": "https://www.example.com/package/basic", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/packages/basic/pro", "name": "PRO", "sameAs": "https://www.example.com/package/pro", "identifier": "example.com:pro", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/sportz", "name": "Sportz", "sameAs": "https://www.example.com/package/sports", "identifier": "example.com:sportz", "commonTier": false } } } }
Lượt mua hàng
Bạn có thể xem nội dung này trong một khoảng thời gian không xác định sau khi mua.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "purchase", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" }, "expectsAcceptanceOf": { "@type": "Offer", "price": 7.99, "priceCurrency": "USD", "seller": { "@type": "Organization", "name": "Example", "sameAs": "http://www.example.com/" } } } }
- Đặt
category
thànhpurchase
. - Thêm
expectAcceptanceOf
vàoactionAccessibilityRequirement
để cho biết giá của giao dịch mua.
Thuê
Nội dung có thể xem trong một khoảng thời gian nhất định sau khi mua.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "rental", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" }, "expectsAcceptanceOf": { "@type": "Offer", "price": 7.99, "priceCurrency": "USD", "seller": { "@type": "Organization", "name": "Example", "sameAs": "http://www.example.com/" } } } }
- Đặt
category
thànhrental
. - Thêm
expectAcceptanceOf
vàoactionAccessibilityRequirement
để cho biết giá của dịch vụ cho thuê.
Trong nguồn cấp dữ liệu Hành động đa phương tiện, bạn có thể hạn chế quyền truy cập vào một kênh hoặc sự kiện của Truyền hình trực tiếp dựa trên hai điều kiện sau đây của người dùng:
-
Vị trí thiết bị của người dùng
Để hạn chế quyền truy cập vào kênh truyền hình, hãy chỉ định khu vực mà người dùng có thể truy cập vào kênh đó. Điều kiện này thường áp dụng cho các kênh truyền hình phát sóng tại địa phương.
-
Trạng thái tài khoản của người dùng
Nếu quyền truy cập vào một kênh truyền hình phụ thuộc vào chế độ cài đặt cấp tài khoản của người dùng, hãy sử dụng giá trị nhận dạng quyền để thể hiện quy định hạn chế.
Điều kiện này thường áp dụng cho các trường hợp sử dụng sau:
- Gói: Các kênh quốc gia thường được đưa vào gói và người dùng sẽ chọn gói mà họ muốn đăng ký.
- Kênh bổ sung: Một số kênh cao cấp yêu cầu người dùng chọn thêm các kênh khác vào gói thuê bao của họ.
- Mạng truyền hình thể thao khu vực (RSN): RSN thường được liên kết với vị trí "nhà" của người dùng. Người dùng có thể xem nội dung trên RSN ngay cả khi họ đi ra khỏi vị trí "nhà" của mình.
Gói thuê bao của bên thứ ba
Nội dung đó có sẵn cho người đăng ký từ một dịch vụ khác.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "externalsubscription" "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription":{ "@type": "MediaSubscription", "@id": "https://www.example.com/faq", "name": "Example", "sameAs": "https://www.example.com/faq", "authenticator": { "@type": "Organization", "name": "TVE" } }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Thêm
authenticator
để cho biết rằng một dịch vụ khác xác thực người đăng ký. Ví dụ: HBO GO yêu cầu gói thuê bao của nhà cung cấp dịch vụ truyền hình cáp.
Gói theo bậc phổ biến
Tất cả người đăng ký đều có thể xem nội dung ở cấp phổ thông, bất kể gói thuê bao của họ. Cấp độ chung áp dụng cho tất cả nội dung có category
là subscription
. Để biết thêm thông tin về thuộc tính category
, hãy xem phần Loại tường phí.
Tại sao cần có gói cấp phổ biến?
Nhiều sản phẩm của Google cung cấp nội dung đề xuất về chương trình truyền hình và phim cho người dùng, bao gồm Google Tìm kiếm, Android TV và Trợ lý Google. Để đặt kỳ vọng của người dùng về chi phí, Google phải hiểu nội dung nào được cung cấp cho tất cả người đăng ký thông qua việc sử dụng cấp phổ biến. Google cũng phải hiểu rõ nội dung nào được cung cấp cho người đăng ký gói thuê bao cụ thể.
Google đề xuất các đầu sách có sẵn ở cấp phổ biến, trừ phi bạn hỗ trợ API quyền. API này cho phép Google hiểu được những bộ phim không thuộc cấp phổ biến mà mỗi người dùng cụ thể có thể truy cập.
Khi nào tôi nên tạo gói cấp phổ biến?
Bạn phải có gói cấp phổ biến khi dịch vụ của bạn cung cấp nội dung mà tất cả người đăng ký đều có thể xem. Điều này bao gồm cả các dịch vụ chỉ cung cấp một gói và các dịch vụ cung cấp nhiều gói hoặc tiện ích bổ sung.
Những nhà cung cấp không cung cấp nội dung cho tất cả người đăng ký không cần tạo gói theo bậc chung. Ví dụ: nhà cung cấp dịch vụ cung cấp nội dung độc quyền trên tất cả các gói của họ.
Ví dụ về các bậc thường gặp
Sau đây là ví dụ về cấp độ phổ biến.
Gói thuê bao theo cấp
Trong mô hình thuê bao theo bậc, nhà cung cấp dịch vụ có nhiều bậc thuê bao, chẳng hạn như bậc Vàng, Bạc và Đồng. Người dùng có gói thuê bao cấp cao hơn sẽ có quyền truy cập vào tất cả nội dung ở các cấp thấp hơn. Người dùng sử dụng gói thuê bao cấp thấp hơn sẽ không có quyền truy cập vào nội dung trong gói thuê bao cấp cao hơn. Hình ảnh sau đây là ví dụ về cấu trúc gói.

Trong ví dụ về mã sau đây, gói bronze là cấp phổ biến vì tất cả người dùng đều có quyền truy cập vào tất cả nội dung trong cấp đó.
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/bronze", "name": "Bronze", "sameAs": "https://www.example.com/package/bronze", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/silver", "name": "Silver", "sameAs": "https://www.example.com/package/silver", "identifier": "example.com:silver", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/gold", "name": "Gold", "sameAs": "https://www.example.com/package/gold", "identifier": "example.com:gold", "commonTier": false } ],
Tiện ích bổ sung
Trong mô hình thuê bao bổ sung, nhà cung cấp dịch vụ cho phép người dùng mở rộng quyền và thêm kênh vào gói thuê bao cơ bản. Người dùng có thể thêm nhiều kênh theo ý muốn. Hình ảnh sau đây là ví dụ về cấu trúc gói.

Nếu có một kênh dành cho tất cả người dùng và kênh đó không tính phí, bạn có thể hợp nhất gói đó với gói cấp phổ biến.
Trong ví dụ về mã sau đây, gói cơ bản là cấp phổ biến vì tất cả người dùng đều có quyền truy cập vào tất cả nội dung trong gói này.
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/basic", "name": "Basic", "sameAs": "https://www.example.com/package/basic", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/packages/basic/pro", "name": "PRO", "sameAs": "https://www.example.com/package/pro", "identifier": "example.com:pro", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/sportz", "name": "Sportz", "sameAs": "https://www.example.com/package/sports", "identifier": "example.com:sportz", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/moviemax", "name": "Moviemax", "sameAs": "https://www.example.com/package/moviemax", "identifier": "example.com:moviemax", "commonTier": false } ],
Gói có nội dung giao nhau
Trong mô hình nội dung mà các gói có nội dung giao nhau, nhà cung cấp dịch vụ sẽ bán các gói bao gồm một số nội dung từ các gói khác. Hình ảnh sau đây là ví dụ về cấu trúc gói.

Trong ví dụ về mã sau đây, nhà cung cấp cung cấp 3 gói, trong đó một số nội dung giao nhau trên tất cả các gói. Trong trường hợp này, bạn cần có gói thứ tư đại diện cho cấp phổ biến. Tệp này phải bao gồm tất cả nội dung có trong cả ba gói.
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/1", "name": "Package 1", "sameAs": "https://www.example.com/package/1", "identifier": "example.com:package1", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/2", "name": "Package 2", "sameAs": "https://www.example.com/package/2", "identifier": "example.com:package2", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/3", "name": "Package 3", "sameAs": "https://www.example.com/package/3", "identifier": "example.com:package3", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/common", "name": "Common Tier Package", "sameAs": "https://www.example.com/package/common", "commonTier": true } ],
Gói không có nội dung giao nhau
Trong mô hình nội dung mà tất cả các gói nội dung không giao nhau, nhà cung cấp dịch vụ sẽ bán các gói không bao gồm nội dung của các gói khác. Hình ảnh sau đây là ví dụ về cấu trúc gói.

Trong ví dụ sau, nhà cung cấp cung cấp 3 gói không có nội dung giao nhau trên tất cả các gói. Không yêu cầu gói cấp phổ biến.
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/1", "name": "Package 1", "sameAs": "https://www.example.com/package/1", "identifier": "example.com:package1", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/2", "name": "Package 2", "sameAs": "https://www.example.com/package/2", "identifier": "example.com:package2", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/3", "name": "Package 3", "sameAs": "https://www.example.com/package/3", "identifier": "example.com:package3", "commonTier": false } ],
Điểm cuối về quyền
Sử dụng thông tin trong phần này để lưu trữ một điểm cuối HTTPS trả về các quyền liên kết với một người dùng.
Điều kiện tiên quyết
Trước khi bắt đầu, hãy xác minh rằng dịch vụ của bạn hỗ trợ quy trình OAuth 2.0 với Google.
Yêu cầu
Để nhận các quyền của người dùng, Google sẽ gửi một yêu cầu chứa mã thông báo OAuth của người dùng. Điểm cuối của bạn cần xác định người dùng dựa trên mã thông báo OAuth đó. Hãy xem ví dụ sau:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
Phản hồi
Điểm cuối của bạn cần trả về một phản hồi có các thuộc tính sau:
Thuộc tính | |
---|---|
subscription |
Bắt buộc Đây là một trường bên trong phản hồi gốc. |
subscription.type |
Bắt buộc Thuộc tính này có thể có các giá trị sau:
|
subscription.expiration_date |
Không bắt buộc Ngày hết hạn của quyền này, ở định dạng ISO 8601, bao gồm cả múi giờ. Để biết thêm thông tin, hãy xem phần Ngày hết hạn. |
entitlements |
Không bắt buộc Đây là thuộc tính gốc chứa các giá trị |
entitlements.entitlement |
Bắt buộc nếu quyền truy cập vào danh mục nội dung phát trực tuyến của bạn thay đổi tuỳ theo loại gói thuê bao. Thuộc tính này chứa |
entitlements.expiration_date |
Không bắt buộc Ngày hết hạn của gói thuê bao này, ở định dạng ISO 8601, bao gồm cả múi giờ. Để biết thêm thông tin, hãy xem phần Ngày hết hạn. |
Ngày hết hạn
Có hai thuộc tính trong phản hồi điểm cuối xử lý ngày hết hạn: subscription.expiration_date
và entitlements.expiration_date
. Bạn có thể thêm một trong hai hoặc không thêm cả hai, nhưng không được thêm cả hai. Bạn sẽ sử dụng phương thức nào tuỳ thuộc vào mô hình thuê bao của mình.
Mô hình gói thuê bao | |
---|---|
Tất cả người đăng ký đều có quyền truy cập vào danh mục nội dung phát trực tuyến của bạn. | Vì bạn không cần chỉ định thuộc tính entitlements , hãy chỉ định subscription.expiration_date . |
Quyền truy cập vào danh mục nội dung phát trực tuyến của bạn sẽ khác nhau tuỳ theo thông tin chi tiết về gói thuê bao của người dùng. |
Nếu mô hình gói thuê bao của bạn có nhiều cấp hoặc tiện ích bổ sung sẽ hết hạn theo thời gian, hãy làm theo một trong những cách sau:
|
Ví dụ về câu trả lời
Sau đây là các phản hồi mẫu của các trạng thái gói thuê bao khác nhau:
- Đăng ký hoạt động
- Gói thuê bao đang hoạt động có ngày hết hạn
- Không có gói thuê bao
- Gói thuê bao đang hoạt động cho nhiều cấp hoặc tiện ích bổ sung
Gói thuê bao đang hoạt động
Một người dùng có gói thuê bao đang hoạt động của example.com. Trong trường hợp này, tất cả người đăng ký đều có quyền truy cập vào toàn bộ danh mục nội dung phát trực tuyến của bạn, bất kể loại gói thuê bao của họ.
{ "subscription" : { "type": "ActiveSubscription", } }
Gói thuê bao đang hoạt động có ngày hết hạn
Một người dùng có gói thuê bao đang hoạt động với example.com và gói thuê bao đó có ngày hết hạn. Trong trường hợp này, tất cả người đăng ký đều có quyền truy cập vào toàn bộ danh mục nội dung phát trực tuyến của bạn, bất kể loại gói thuê bao của họ.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
Không có gói thuê bao
Người dùng không có gói thuê bao của example.com.
{ "subscription" : { "type": "InactiveSubscription" } }
Gói thuê bao đang hoạt động của nhiều cấp hoặc tiện ích bổ sung
Một người dùng có gói thuê bao example.com:premium
cho đến một ngày nhất định.
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
Giới hạn tốc độ
Google làm mới thông tin về quyền của người dùng tối đa 6 giờ một lần. Để số truy vấn tối đa mỗi giây (QPS) diễn ra suôn sẻ, Google phân phối các truy vấn đến điểm cuối của bạn một cách đồng đều theo thời gian. Do đó, bạn có thể ước tính QPS trung bình dự kiến cho điểm cuối của mình bằng công thức sau:
QPS trung bình dự kiến = <tổng số người dùng> / 21.600 giây (6 giờ x 60 phút x 60 giây)
Nếu bạn hỗ trợ một lượng lớn người dùng, Google có thể điều chỉnh khoảng thời gian 6 giờ. Nếu cần, hãy liên hệ với Google để thảo luận về cấu hình.
Liên hệ với Google
Khi điểm cuối của bạn đã sẵn sàng, hãy liên hệ với Google để thông báo URL của điểm cuối.
Thuộc tính quy cách quyền truy cập vào hành động
Hãy xem phần thuộc tính quy cách truy cập hành động để biết thông tin tham khảo.