Użytkownicy wolą oglądać lub słuchać treści, do których mają już dostęp, takich jak treści dostępnych w ramach subskrypcji. Jeśli Google wie, jakie treści użytkownik może dostęp do niej w aplikacji lub na platformie, Google może wygenerować lepszy wynik wyszukiwania lub odpowiedź, która ma skierować użytkownika do tych treści.
Określanie wymagań dotyczących dostępu do treści
Musisz określić wymagania dotyczące dostępu dla każdego pakietu treści w katalogu. W takim przypadku weź pod uwagę te kwestie:
- Czy użytkownicy muszą logować się w aplikacji lub na platformie, aby uzyskać dostęp do treści?
Czy użytkownicy potrzebują subskrypcji?
Tylko działania związane z oglądaniem:
- Czy użytkownicy potrzebują subskrypcji od zewnętrznego dostawcy usług?
- Czy oferujesz wielopoziomową subskrypcję obejmującą wiele pakietów lub dodatkowe subskrypcje?
Tylko działania związane z oglądaniem: czy użytkownicy muszą wypożyczać lub kupować treści?
Czy wymagania dotyczące dostępu zmieniają się z czasem?
Czy wymaganie dostępu zależy od lokalizacji urządzenia?
Typy ograniczeń dostępu
Istnieją 2 rodzaje ograniczeń dostępu:
Typ paywalla
Możesz ograniczyć dostęp do treści według typu paywalla. Tabela poniżej szczegółowo opisujemy różne typy paywalla:
Typ paywalla | Przykład | Kategoria |
---|---|---|
Nie musisz niczego kupować ani logować się. | Crackle | nologinrequired |
Użytkownik musi być zalogowany, ale nie potrzebuje płatnej subskrypcji. | vudu (AVOD) | free |
Użytkownik musi mieć aktywną subskrypcję. Dostęp jest niezależny od: na poziomie subskrypcji. | Netflix |
|
Użytkownik musi mieć aktywną subskrypcję. Dostęp zależy od typ subskrypcji. | Hulu (dodatki) |
|
Treści są dostępne przez ograniczony czas po zakup. | Vudu | rental |
Treści są dostępne przez czas nieokreślony po zakup. | Vudu | purchase |
Treści są dostępne w ramach abonamentu telewizji kablowej. | HBO Go | externalSubscription |
Typ paywalla dla działań związanych z oglądaniem
Aby określić typ paywalla dla działań oglądania, użyj parametru
category
w sekcji
Specyfikacja dostępu do działań:
"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"
}
},
...
}
Typ Paywall za działania nasłuchiwania
Aby określić typ paywalla dla treści w przypadku działań związanych z słuchaniem, użyj parametru
category
w sekcji
obiekt oferty:
"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"
}
},
...
}
Obszar geograficzny
Musisz określić obszary geograficzne, w których treści są dostępne. Użyj jednej lub obie te właściwości:
- Właściwość
eligibleRegion
elementu Specyfikacja dostępu do działań obiektu. Ta właściwość jest wymagana. - Właściwość
ineligibleRegion
elementu Specyfikacja dostępu do działań obiektu.
Użytkownik może uzyskiwać dostęp do treści, jeśli lokalizacja urządzenia znajduje się w dowolnym regionie,
określono w eligibleRegion
i nie należy do żadnego regionu określonego w
ineligibleRegion
Właściwości eligibleRegion
i ineligibleRegion
umożliwiają:
wartości:
- Lista wartości
Country
City
iState
. - O
GeoShape
obiektu. Zobacz Usługi:GeoShape
. - Lista
GeoShape
obiektów.
Jeśli treści są dostępne na całym świecie, użyj następującej wartości specjalnej jak
eligibleRegion
:
"eligibleRegion": "EARTH",
Przypadki użycia allowRegion
Oto przykłady przypadków użycia właściwości eligibleRegion
:
- Przykład 1:
eligibleRegion
z listą krajów. - Przykład 2:
eligibleRegion
z obiektemGeoShape
, który zawiera listę kodów pocztowych. - Przykład 3:
eligibleRegion
z obiektemGeoShape
, który zawiera listę kodów FSA (Forward Sortation Area – sortowania). - Przykład 4:
eligibleRegion
z obiektemGeoShape
, który zawiera identyfikator DMA. - Przykład 5:
eligibleRegion
z listą obiektówGeoShape
. Każdy z nich zawiera identyfikator DMA. - Przykład 6:
ineligibleRegion
z zablokowanymi kodami pocztowymi.
Przykład 1
eligibleRegion
z listą krajów:
"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" } ] }
Przykład 2
eligibleRegion
z obiektem GeoShape
, który
zawiera listę kodów pocztowych:
"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" ] } }
Przykład 3
eligibleRegion
z obiektem GeoShape
, który
zawiera listę kodów FSA (Forward Sortation Area – sortowanie):
"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" ] } }
Przykład 4
eligibleRegion
z obiektem GeoShape
, który
zawiera identyfikator 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" } ] } }
Przykład 5
eligibleRegion
z listą obiektów GeoShape
.
Każdy z nich zawiera identyfikator 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" } } ] }
Przykład 6
ineligibleRegion
z zablokowanymi kodami pocztowymi:
"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" ] } }
Identyfikator uprawnienia
Identyfikator uprawnienia (entitlementId
) odnosi się do ciągu znaków, który reprezentuje
dostęp do grupy treści z Twojego katalogu multimediów. Aby ustalić, czy użytkownik
ma dostęp do Twoich treści, Google wykonuje te czynności:
- Wywołanie interfejsu API Punkt końcowy uprawnień, do którego otrzymasz identyfikatory uprawnień.
- Szukamy wymaganych identyfikatorów uprawnień do treści w Twoich mediach Plik danych działań.
- Dopasowujemy
entitlementId
użytkownika doidentifier
właściwości subskrypcja multimediów w pliku danych. Jeśli co najmniej 1 wynikentitlementId
, określamy, że użytkownik ma dostęp do treści.
Google zaleca użycie tej składni w polu entitlementId
:
<domain name> + colon (:) + <access level to content>
Przykłady składni:
example.com:basic
example.com:premium
example.com:sports
Przykład identyfikatora uprawnień
Plik danych MediaExampleCompany określa, że Movie XYZ
wymaga parametru
example.com:basic
entitlementId
, na przykład:
{ "@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 ... }, ... } }, ... }
Typowe przypadki użycia dostępu
Oto typowe przypadki użycia:
- Bezpłatnie (bez logowania): treści są dostępne bez logowania, subskrypcji czy zakupu.
- Bezpłatnie (wymagane logowanie): wymaga zalogowania się, ale nie wymaga subskrypcji.
- Subskrypcja jednopoziomowa: Treści wymagają subskrypcji. Wszyscy subskrybenci mają dostęp do tego samego treści (filmów i odcinków), niezależnie od ich subskrypcji pakietu SDK.
- Subskrypcja wielopoziomowa: treści wymagają subskrypcji. Subskrybenci mają dostęp do różnych treści, filmów czy odcinków – w zależności od poziomu subskrypcji. Przykład: Srebro kontra Złoty.
- Subskrypcja dodatku: treści. wymaga subskrypcji. Subskrybenci mogą dodawać płatne treści standardowej subskrypcji.
- Jednorazowy zakup: treści można zostanie zakupiony, dzięki czemu użytkownik będzie miał do niej dostęp bezterminowo.
- Telewizja na żywo: subskrypcja obejmuje dostęp do: lokalnych, krajowych i premium.
- Subskrypcja innej firmy: Treści wymagają od użytkownika zalogowania się u dostawcy telewizji kablowej.
Bezpłatnie (logowanie się nie jest wymagane)
Logowanie się nie jest wymagane
Treści są dostępne bez logowania i subskrypcji.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Ustaw
category
nanologinrequired
. - Nie uwzględniaj wartości
expectAcceptanceOf
.
Bezpłatnie (zalogowanie się jest wymagane)
Wymagane logowanie
Treści wymagają od użytkowników zalogowania się, ale nie są wymagane subskrypcji.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Ustaw
category
nafree
. - Nie uwzględniaj wartości
expectAcceptanceOf
.
Subskrypcja jednopoziomowa
W modelu subskrypcji jednopoziomowej dostawca usług ma jeden typ subskrypcji. Wszyscy subskrybenci mają dostęp do tych samych treści niezależnie od tego, filmów czy odcinków bez względu na pakiet subskrypcji.
{ "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" } } }
Subskrypcja wielopoziomowa
W warstwowym modelu subskrypcji usługodawca ma wiele poziomów subskrypcji, takich jak Złoty, Srebrny, Brązowy. Użytkownicy, którzy mają subskrypcję najwyższego poziomu, mają dostęp do wszystkich treści z niższej kategorii. Jednak użytkownicy, którzy należą do niższego poziomu subskrypcja nie może uzyskać dostępu do treści wyższego poziomu.
Przyjrzyjmy się temu scenariuszowi:
- Janina subskrybuje poziom złoty. Twoje uprawnienia
punkt końcowy zwraca te identyfikatory
entitlementId
:example.com:bronze
example.com:silver
example.com:gold
- Jan subskrybuje poziom Brązowy. Twoje uprawnienia
Punkt końcowy zwraca tę wartość
entitlementId
:example.com:bronze
- Plik danych Media Actions zawiera te wymagania:
- Film A wymaga
example.com:bronze
. - Film B wymaga
example.com:silver
.
- Film A wymaga
W takim przypadku Google określa następujące poziomy dostępu dla Anny: a Jan:
- Zarówno Anna, jak i John mają dostęp do filmu A.
- Janina ma dostęp do Filmu B, ale Jan nie ma dostępu.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
Subskrypcja dodatku
W modelu subskrypcji dodatków dostawca usług umożliwia użytkownikom rozszerzyć swoje uprawnienia i dodać kanały do subskrypcji podstawowej. Użytkownicy mogą dodać dowolną liczbę kanałów.
Przyjrzyjmy się temu scenariuszowi:
- Janina ma kanały PRO i PRO, a nie tylko
Podstawowa. Punkt końcowy uprawnień zwraca wartość
te identyfikatory (
entitlementId
):example.com:basic
example.com:pro
example.com:sportz
- Jan ma tylko subskrypcję Podstawowa. Twoje uprawnienia
Punkt końcowy zwraca tę wartość
entitlementId
:example.com:basic
- Plik danych Media Actions zawiera te wymagania:
- Film A wymaga
example.com:basic
. - Film B wymaga
example.com:pro
.
- Film A wymaga
W takim przypadku Google określa następujące poziomy dostępu dla Anny: a Jan:
- Zarówno Anna, jak i John mają dostęp do filmu A.
- Janina ma dostęp do Filmu B, ale Jan nie ma dostępu.
{ "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 } } } }
Zakup jednorazowy
Zakup
Treści są dostępne przez czas nieokreślony po zakup.
{ "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/" } } } }
- Ustaw
category
napurchase
. - Uwzględnij
expectAcceptanceOf
wactionAccessibilityRequirement
, aby wskazać cenę zakup.
Wypożyczenie
Treści są dostępne przez ograniczony czas po zakup.
{ "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/" } } } }
- Ustaw
category
narental
. - Uwzględnij
expectAcceptanceOf
wactionAccessibilityRequirement
, aby wskazać cenę do wypożyczenia.
Telewizja na żywo
W pliku danych działań związanych z multimediami możesz ograniczyć dostęp do telewizji na żywo. channel lub event na podstawie następujące 2 warunki:
-
Lokalizacja urządzenia użytkownika
Aby ograniczyć dostęp do kanału telewizyjnego, określ obszar, na którym użytkownicy mają do nich dostęp. Ten warunek dotyczy zwykle transmisji lokalnych Kanały telewizyjne.
-
Stan konta użytkownika
Jeśli dostęp do kanału telewizyjnego zależy od ustawień na poziomie konta użytkownika, należy użyć funkcji identyfikatorów uprawnień na nie stanowią ograniczenia.
Zwykle ten warunek ma zastosowanie w tych przypadkach użycia:
- Pakiet: kanały krajowe są często częścią a użytkownicy wybierają pakiet, który chcą subskrybować.
- Dodatek: niektóre kanały premium wymagają od użytkowników wybrać dodatkowe kanały do subskrypcji.
- Regionalna sieć sportowa (RSN): numery RSN są zwykle powiązane z domeną użytkownika lokalizacji. Użytkownicy mogą oglądać treści na RSN nawet wtedy, gdy przebywają poza swoim „domem” lokalizacji.
Subskrypcja innej firmy
Subskrypcja innej firmy
Treści są dostępne dla subskrybentów w innej usłudze.
{ "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" } } }
- Dodaj
authenticator
, aby wskazać, że usługa uwierzytelnia subskrybentów. Na przykład HBO GO wymaga: operatora telewizji kablowej.
Typowe pakiety poziomu
Treści z poziomu wspólnego są dostępne dla wszystkich subskrybentów niezależnie
pakietu subskrypcji. Wspólna warstwa dotyczy wszystkich treści z atrybutem category
z subscription
. Więcej informacji o właściwości category
znajdziesz w
Typ paywall.
Dlaczego wymagany jest wspólny pakiet poziomu?
Wiele usług Google zapewnia dostęp do telewizji polecać użytkownikom filmy; w tym obejmuje wyszukiwarkę Google, Androida TV i Asystenta Google. Aby ustawić użytkownika co do kosztów, Google musi wiedzieć, jakie treści są dostępne dla wszystkich subskrybentów za pomocą wspólnego poziomu. Google musi też wiedzieć, treści są dostępne dla subskrybentów z określonymi pakietami subskrypcji.
Google zaleca tytuły dostępne na poziomie wspólnym, chyba że obsługujesz entitlement API. Interfejs API pozwala Google rozpoznawać tytuły, które nie są często używane przez poszczególne grupy użytkownik ma dostęp do filmu.
Kiedy należy utworzyć wspólny pakiet poziomów?
Jeśli Twoja usługa oferuje treści, które dostępne dla wszystkich subskrybentów. Obejmuje to usługi, które oferują tylko jeden pakiet. i usługi, które oferują wiele pakietów lub dodatków.
Dostawcy, którzy nie mają dostępu do treści dostępnych dla wszystkich subskrybentów, nie muszą tworzyć na wspólny pakiet poziomów. Przykładem mogą być dostawcy usług, którzy wzajemnie się wykluczają we wszystkich pakietach.
Typowe przykłady poziomów
Oto przykłady wspólnego poziomu.
Subskrypcja wielopoziomowa
W modelu subskrypcji wielopoziomowej dostawca usług ma wiele subskrypcji poziomów, takie jak Złoty, Srebrny i Brązowy. Użytkownicy z w ramach subskrypcji wyższego poziomu – do wszystkich treści z niższych poziomów. Użytkownicy użytkownicy z subskrypcją niższego poziomu nie mają dostępu do treści na górze. . Poniższy obraz przedstawia przykład struktury pakietu.
W poniższym przykładzie kodu pakiet Brąz jest typową warstwą, ponieważ wszystkie użytkownicy mają dostęp do wszystkich treści na tym poziomie.
"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 } ],
Dodatki
W modelu subskrypcji dodatków dostawca usług umożliwia użytkownikom swoje uprawnienia, a także dodawać kanały do subskrypcji podstawowej. Użytkownicy mogą dodać jako dowolną liczbę kanałów. Ten obraz przedstawia przykład pakietu do jego struktury.
Jeśli masz kanał dostępny dla wszystkich użytkowników i nie wiąże się to z żadnymi kosztami kanału, możesz scalić ten pakiet ze wspólnym pakietem poziomów.
W poniższym przykładzie kodu pakiet podstawowy jest wspólnym poziomem, ponieważ wszystkie Użytkownicy mają dostęp do wszystkich treści w tym pakiecie.
"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 } ],
Pakiety z treściami, które się przecinają
W modelu treści, w którym pakiety zawierają treści, które przecinają usługę, dostawca sprzedaje pakiety zawierające część treści z innych pakietów. Poniższy obraz przedstawia przykład struktury pakietu.
W poniższym przykładzie kodu dostawca oferuje 3 pakiety, z których część które przecinają się we wszystkich pakietach. W tym przypadku czwarty pakiet reprezentujący wspólny poziom, jest wymagana. Musi zawierać wszystkie treści we wszystkich trzech pakietach.
"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 } ],
Pakiety bez treści, które przecinają
W modelu treści, w którym wszystkie pakiety treści nie przecinają się, usługa dostawca sprzedaje pakiety, które nie zawierają treści z innych pakietów. Poniższy obraz przedstawia przykład struktury pakietu.
W poniższym przykładzie dostawca oferuje 3 pakiety bez treści. które przecinają wszystkie pakiety. Nie jest wymagany żaden wspólny pakiet poziomu.
"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 } ],
Punkt końcowy uprawnień
Wykorzystaj informacje z tej sekcji do hostowania punktu końcowego HTTPS, który zwraca powiązanych z użytkownikiem uprawnienia.
Warunek wstępny
Zanim zaczniesz, sprawdź, czy Twoja usługa obsługuje obsługa protokołu OAuth 2.0 w Google;
Żądanie
Aby otrzymać uprawnienia użytkownika, Google wysyła żądanie, które zawiera token OAuth użytkownika. Punkt końcowy musi identyfikować użytkownika na podstawie tego protokołu OAuth token. Przyjrzyj się temu przykładowi:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
Odpowiedź
Punkt końcowy musi zwrócić odpowiedź z tymi właściwościami:
Właściwość | |
---|---|
subscription |
Wymagany To jest pole w odpowiedzi na poziomie roota. |
subscription.type |
Wymagany Właściwość ta może mieć następujące wartości:
|
subscription.expiration_date |
Opcjonalny Data ważności tego uprawnienia w formacie Format ISO 8601, który obejmuje też strefę czasową. Więcej informacji: Daty ważności |
entitlements |
Opcjonalny Ta usługa główna zawiera wartości |
entitlements.entitlement |
Wymagany, jeśli dostęp do katalogu strumieniowego przesyłania danych jest różny na podstawie typu subskrypcji. Ta właściwość zawiera: |
entitlements.expiration_date |
Opcjonalny Data wygaśnięcia tej subskrypcji podana w formacie Format ISO 8601, który obejmuje też strefę czasową. Więcej informacji: Daty ważności |
Daty ważności
Odpowiedź punktu końcowego zawiera 2 właściwości, które dotyczą wygaśnięcia
daty: subscription.expiration_date
i entitlements.expiration_date
. Ty
może zawierać jeden z nich lub żaden z nich, ale nie oba. To, którego z nich użyjesz, zależy od tego,
model subskrypcji.
Model subskrypcji | |
---|---|
Wszyscy subskrybenci mają taki sam dostęp do katalogu strumieniowania. | Ponieważ nie trzeba określać entitlements
należy podać subscription.expiration_date . |
Dostęp do katalogu strumieniowania zależy od szczegółów subskrypcji. |
Jeśli Twój model subskrypcji ma wiele poziomów lub dodatków, wygasają z czasem, wykonaj jedną z tych czynności:
|
Przykładowe odpowiedzi
Poniżej znajdziesz przykładowe odpowiedzi różnych stanów subskrypcji:
- Aktywna subskrypcja
- Aktywna subskrypcja z datą ważności
- Brak subskrypcji
- Aktywne subskrypcje wielu poziomów lub dodatków
Aktywna subskrypcja
Aktywna subskrypcja
Użytkownik ma aktywną subskrypcję example.com. W tym w przypadku każdego, wszyscy subskrybenci mają dostęp do całego katalogu bez względu na rodzaj subskrypcji.
{ "subscription" : { "type": "ActiveSubscription", } }
Aktywna subskrypcja z datą ważności
Aktywna subskrypcja z datą ważności
Użytkownik ma aktywną subskrypcję example.com, a subskrypcja ma datę ważności. W tym przypadku wszyscy subskrybenci mają dostępu do całego katalogu strumieniowania niezależnie od jego subskrypcji typu.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
Brak subskrypcji
Brak subskrypcji
Użytkownik nie ma subskrypcji domeny example.com.
{ "subscription" : { "type": "InactiveSubscription" } }
Aktywne subskrypcje wielu poziomów lub dodatków
Aktywne subskrypcje wielu poziomów lub dodatków
Użytkownik wykupił subskrypcję example.com:premium
do określonej daty.
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
Limit liczby żądań
Google odświeża informacje o uprawnieniach użytkownika co 6 godzin. Do wygładza maksymalną liczbę zapytań na sekundę (QPS), Google rozdziela zapytania do punktu końcowego. Dzięki temu możesz oszacować oczekiwaną średnią Zapytania na sekundę dla punktu końcowego według tej formuły:
Oczekiwana średnia liczba zapytań na sekundę = <łączna liczba użytkowników> / 21 600 sekund (6 godzin x 60 minut x 60 sekund)
Jeśli obsługujesz dużą liczbę użytkowników, Google może zmienić 6-godzinny interwał. W razie potrzeby skontaktuj się z Google, aby omówić konfigurację.
Kontaktowanie się z Google
Gdy punkt końcowy będzie gotowy, skontaktuj się z Google, aby podać jego adres URL.
Właściwości specyfikacji dostępu do działań
Zobacz Właściwości specyfikacji dostępu do działań. i informacjami o nich.