Các yêu cầu cần đáp ứng để truy cập

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 thuê bao hiện có của họ. Nếu Google biết nội dung nào người dùng có thể quyền truy cập trên ứng dụng hoặc nền tảng của bạn, thì Google có thể tạo ra kết quả tìm kiếm tốt hơn hoặc phản hồi để hướng người dùng đến nội dung đó.

Hình 1. Yêu cầu về quyền truy cập giúp người đăng ký có quyền truy cập nội dung trên ứng dụng hoặc nền tảng của bạn.

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 đối với từng gói nội dung trong danh mục nhạc phẩm. Khi bạn làm như vậy, hãy cân nhắc các 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ỉ 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 cung cấp gói thuê bao theo bậc, nhiều gói hay tiện ích bổ sung?
  • Chỉ 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ế về 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 nêu chi tiết các loại tường phí:

Loại tường phí Ví dụ: Danh mục
Không yêu cầu mua hàng hoặc đăng nhập. Crackle nologinrequired
Người dùng phải đăng nhập nhưng không cần gói thuê bao có tính phí. Vudu (AVOD) free
Người dùng phải có một gói thuê bao đang hoạt động. Quyền truy cập không phụ thuộc vào cấp đăng ký. Netflix

subscription

Người dùng phải có một gói thuê bao đang hoạt động. Quyền truy cập phụ thuộc vào cấp đăng ký. Hulu (tiện ích bổ sung)

subscription

Nội dung có sẵn trong một khoảng thời gian hữu hạn sau mua hàng. Vudu rental
Nội dung được cung cấp trong một khoảng thời gian không giới hạn sau mua hàng. Vudu purchase
Bạn có thể xem nội dung bằng 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 xem, hãy sử dụng category thuộc tính trong Thông số kỹ thuật về quyền truy cập thao tác:

"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 category thuộc tính 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 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:

Người dùng có thể truy cập vào nội dung nếu vị trí thiết bị nằm trong bất kỳ khu vực nào được chỉ định ở eligibleRegion và không nằm trong bất kỳ khu vực nào được chỉ định ở ineligibleRegion

Thuộc tính eligibleRegionineligibleRegion cho phép những nội dung sau giá trị:

Nếu nội dung đó được cung cấp 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 đủ điều kiện của khu vực

Sau đây là ví dụ về các trường hợp sử dụng thuộc tính eligibleRegion:

  • Ví dụ 1: eligibleRegion kèm theo danh sách các quốc gia.
  • Ví dụ 2: eligibleRegion với đối tượng GeoShape chứa danh sách mã ZIP.
  • Ví dụ 3: eligibleRegion với đối tượng GeoShape có 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ượng GeoShape chứa một mã DMA.
  • Ví dụ 5: eligibleRegion với danh sách các đối tượng GeoShape. Mỗi đường dẫn chứa một mã DMA.
  • Ví dụ 6: ineligibleRegion có mã bưu chính bị chặn.

Ví dụ 1

eligibleRegion kèm theo danh sách các 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"
    }
  ]
}

Ví dụ 2

eligibleRegion với một đối tượng GeoShape chứa danh sách các 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"
    ]
  }
}

Ví dụ 3

eligibleRegion với một đố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"
    ]
  }
}

Ví dụ 4

eligibleRegion với một đối tượng GeoShape chứa một 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"
      }
    ]
  }
}

Ví dụ 5

eligibleRegion với danh sách các đối tượng GeoShape. Mỗi đường dẫn chứa một mã 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"
         }
      }
   ]
}

Ví dụ 6

ineligibleRegion với mã ZIP bị chặn:


"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 quyền truy cập vào một nhóm nội dung trong danh mục nội dung đa phương tiện của bạn. Để xác định xem người dùng có có quyền truy cập vào nội dung của bạn, thì Google sẽ thực hiện các bước sau:

  1. Chúng tôi thực hiện lệnh gọi API đến Quyền truy cập điểm cuối để nhận thông tin đăng nhập của người dùng mã nhận dạng quyền.
  2. Chúng tôi tra cứu giá trị nhận dạng quyền bắt buộc của nội dung trên Nội dung nghe nhìn của bạn Nguồn cấp dữ liệu Hành động.
  3. Chúng tôi so khớp entitlementId của người dùng với identifier thuộc tính của gói thuê bao nội dung nghe nhìn trong nguồn cấp dữ liệu của mình. Nếu ít nhất một entitlementId trùng khớp, chúng tôi xác định rằng người dùng có thể truy cập vào nội dung.
Hình 2. Một trong các giá trị nhận dạng quyền của người dùng trùng khớp giá trị nhận dạng quyền bắt buộc của 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ề giá trị 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ư minh hoạ:

{
  "@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): nội dung được cung cấp mà không cần đăng nhập, đăng ký hoặc mua.
  • Miễn phí (cần đă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 bậc: Bạn cần đăng ký gói thuê bao để xem nội dung đó. Tất cả người đăng ký đều có thể truy cập nội dung, cho dù là phim hay tập, bất kể gói thuê bao của họ là gì .
  • Gói thuê bao nhiều bậc: nội dung yêu cầu thuê bao. Người đăng ký có thể truy cập vào các nội dung khác nhau, cho dù là phim hay tập, dựa trên cấp thuê bao của chúng. Ví dụ: Bạc so với Vàng.
  • Gói thuê bao bổ sung: Nội dung yêu cầu đăng ký. Người đăng ký có thể thêm nội dung trả phí ngoài của bạn.
  • Mua hàng một lần: Nội dung có thể mua, sau đó người dùng có thể truy cập sản phẩm vô thời hạn.
  • Truyền hình trực tuyến: Gói thuê bao bao gồm quyền truy cập vào trên 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 thông qua nhà cung cấp truyền hình cáp.

Miễn phí (không yêu cầu đăng nhập)

Không yêu cầu đăng nhập

Nội dung có thể xem được 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ành nologinrequired.
  • Không bao gồm expectAcceptanceOf.

Miễn phí (yêu cầu đăng nhập)

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 của bạn.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • Đặt category thành free.
  • Không bao gồm expectAcceptanceOf.

Gói thuê bao một bậc

Trong mô hình gói thuê bao một bậc, nhà cung cấp dịch vụ sẽ có một cấp đăng ký. Tất cả người đăng ký đều có thể truy cập vào cùng một nội dung, cho dù phim hoặc tập, bất kể gói thuê bao 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"
    }
  }
}

Gói thuê bao nhiều bậc

Trong mô hình gói thuê bao theo cấp, một nhà cung cấp dịch vụ sẽ có nhiều cấp thuê bao, chẳng hạn như Vàng, BạcĐồ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ả các gói thuê bao nội dung ở cấp thấp hơn. Tuy nhiên, những người dùng có cấp thấp hơn gói thuê bao không thể truy cập vào nội dung cấp cao hơn.

Hình 3. Mô hình gói thuê bao theo cấp và thể hiện các quyền.

Hãy xem xét trường hợp sau:

  • Jane đăng ký bậc Vàng. Quyền của bạn điểm cuối trả về các giá trị nhận dạng entitlementId sau:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • John đăng ký bậc Đồng. Quyền của bạn điểm cuối trả về entitlementId sau:
    • example.com:bronze
  • Nguồn cấp dữ liệu Hành động đối với nội dung đa phương tiện mô tả các yêu cầu sau:
    • Phim A cần có example.com:bronze.
    • Phim B cần có example.com:silver.

Trong trường hợp này, Google xác định các cấp truy cập sau đây 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
      ...
    },
    ...
  }
}

Gói thuê bao tiện ích bổ sung

Trong mô hình gói thuê bao tiện ích bổ sung, nhà cung cấp dịch vụ cho phép người dùng mở rộng quyền của họ và thêm kênh vào gói thuê bao cơ bản. Số người dùng có thể thêm bao nhiêu kênh tuỳ thích.

Hình 4. Mô hình gói thuê bao tiện ích bổ sung và thể hiện các quyền.

Hãy xem xét trường hợp sau:

  • Bên cạnh đó, Jane có PROSportz Gói thuê bao Cơ bản. Điểm cuối quyền của bạn sẽ trả về 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. Quyền của bạn điểm cuối trả về entitlementId sau:
    • example.com:basic
  • Nguồn cấp dữ liệu Hành động đối với nội dung đa phương tiện mô tả các yêu cầu sau:
    • Phim A cần có example.com:basic.
    • Phim B cần có example.com:pro.

Trong trường hợp này, Google xác định các cấp truy cập sau đây 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
        }
    }
  }
}

Mua hàng một lần

Lượt mua hàng

Nội dung được cung cấp trong một khoảng thời gian không giới hạn sau mua hàng.


{
  "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ành purchase.
  • Đưa expectAcceptanceOf vào actionAccessibilityRequirement để cho biết giá của mua hàng.

Cho thuê

Nội dung có sẵn trong một khoảng thời gian hữu hạn sau mua hàng.


{
  "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ành rental.
  • Đưa expectAcceptanceOf vào actionAccessibilityRequirement để cho biết giá của thuê.

Truyền hình trực tuyến

Trong nguồn cấp dữ liệu Hành động đối với nội dung đa phương tiện, bạn có thể hạn chế quyền truy cập vào Truyền hình trực tiếp channel hoặc sự kiện dựa trên hai điều kiện người dùng sau:

  • Vị trí thiết bị của người dùng

    Để hạn chế quyền truy cập vào kênh TV, hãy chỉ định khu vực nơi người dùng sẽ có quyền truy cập vào thiết bị đó. Điều kiện này thường áp dụng cho truyền phát cục bộ Kênh truyền hình.

  • 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, sử dụng giá trị nhận dạng quyền để biểu thị 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: Kênh quốc gia thường được đưa vào theo gói và người dùng chọn gói họ muốn đăng ký.
    • Tiện ích bổ sung: Một số kênh cao cấp yêu cầu người dùng thêm các kênh bổ sung một cách có chọn lọc vào đăng ký của họ.
    • Mạng thể thao khu vực (RSN): RSN thường được liên kết với "nhà" của người dùng vị trí. Người dùng có thể xem nội dung trên RSN ngay cả khi họ di chuyển ra khỏi "nhà" của mình vị trí.

Gói thuê bao của bên thứ ba

Gói thuê bao của bên thứ ba

Người đăng ký có thể xem nội dung 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 từ nhà cung cấp truyền hình cáp.

Gói bậc phổ biến

Nội dung theo bậc phổ biến được cung cấp cho tất cả người đăng ký bất kể của bạn. Bậc chung áp dụng cho tất cả nội dung có category trong tổng số subscription. Để biết thêm thông tin về thuộc tính category, hãy xem Mục 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 TV & đề xuất phim cho người dùng; này bao gồm Google Tìm kiếm, Android TV và Trợ lý Google. Để đặt người dùng kỳ vọng về chi phí, Google phải nắm được nội dung nào dành cho tất cả mọi người số người đăng ký thông qua cấp chung. Google cũng phải nắm được nội dung được cung cấp cho những người đăng ký có gói thuê bao cụ thể.

Google đề xuất các tiêu đề có sẵn ở cấp phổ biến trừ khi bạn hỗ trợ Quyền API. API này giúp Google hiểu được các tiêu đề không phổ biến, từng cấp người dùng có thể truy cập.

Khi nào tôi nên tạo gói theo cấp chung?

Bạn phải có gói bậc chung khi dịch vụ của bạn cung cấp nội dung cho tất cả người đăng ký. 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.

Bạn không cần phải tạo những nhà cung cấp chưa cung cấp nội dung cho tất cả người đăng ký một gói lớp chung. Ví dụ: những nhà cung cấp dịch vụ cung cấp loại trừ lẫn nhau trên tất cả các gói của họ.

Ví dụ về bậc phổ biến

Sau đây là ví dụ về cấp phổ biến.

Gói thuê bao theo bậc

Trong mô hình gói thuê bao theo cấp, nhà cung cấp dịch vụ sẽ có nhiều gói thuê bao bậc, chẳng hạn như bậc Vàng, BạcĐồng. Người dùng có gói thuê bao cấp cao hơn có quyền truy cập vào tất cả nội dung ở cấp thấp hơn. Số người dùng với gói thuê bao cấp thấp hơn sẽ không có quyền truy cập vào nội dung ở cấp cao hơn cấp. Hình ảnh sau đây là ví dụ về cấu trúc gói.

Cấp Vàng chứa tất cả nội dung của cấp Bạc, mà
            chứa tất cả bậc Đồng.
Hình 5. Cấu trúc gói thuê bao theo cấp bậc.

Trong ví dụ về mã sau, gói đồng là cấp phổ biến vì tất cả người dùng 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 gói thuê bao tiện ích bổ sung, nhà cung cấp dịch vụ cho phép người dùng mở rộng các quyền của họ và thêm kênh vào một gói thuê bao cơ bản. Người dùng có thể thêm dưới dạng nhiều kênh như họ muốn. Hình ảnh sau đây là một ví dụ về gói cấu trúc.

Mỗi người dùng đều bắt đầu từ kênh Cơ bản và họ có thể chọn thêm
            bất kỳ sự kết hợp nào giữa các kênh PRO, Sportz và Moviemax.
Hình 6. Cấu trúc gói thuê bao tiện ích bổ sung.

Nếu bạn cung cấp một kênh cho tất cả người dùng và bạn không phải trả phí kênh, bạn có thể hợp nhất gói đó với gói theo cấp chung.

Trong ví dụ về mã sau, gói cơ bản là cấp phổ biến vì tất cả Người dùng 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
    }
  ],

Các gói có nội dung giao thoa

Trong mô hình nội dung mà các gói có nội dung giao nhau, dịch vụ nhà cung cấp các gói chứa một số nội dung từ các gói khác. Chiến lược phát hành đĩa đơn hình ảnh sau đây là ví dụ về cấu trúc gói.

Biểu đồ Venn trong đó sự chồng chéo giữa các gói 1, 2 và 3 là
            có nhãn &#39;Cấp phổ biến&#39;.
Hình 7. Cấu trúc gói có nội dung giao thoa với nhau.

Trong mã ví dụ sau, nhà cung cấp cung cấp 3 gói trong đó một số nội dung nào đó giao nhau trên tất cả các gói. Trong trường hợp này, gói thứ tư đại diện cho cấp chung là bắt buộc. Biểu trưng phải bao gồm tất cả nội dung có sẵn trên 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
    }
  ],

Các gói không có nội dung giao thoa

Trong một mô hình nội dung mà tất cả các gói nội dung không giao nhau, một dịch vụ nhà cung cấp các gói không chứa nội dung trong các gói khác. Chiến lược phát hành đĩa đơn hình ảnh sau đây là ví dụ về cấu trúc gói.

Gói 1, 2 và 3 hoàn toàn riêng biệt.
Hình 8. Cấu trúc gói không có giao nhau .

Trong ví dụ sau, nhà cung cấp đưa ra 3 gói không có nội dung giao nhau trên tất cả các gói. Không cần gói bậc chung.

"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 quyền

Sử dụng thông tin trong phần này để lưu trữ điểm cuối HTTPS trả về liên kết với 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 quyền của người dùng, Google sẽ gửi một yêu cầu có 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 OAuth đó mã thông báo. 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ần trả về 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:

  • ActiveSubscription: Người dùng có một gói thuê bao đang hoạt động cho nhà cung cấp.
  • ActiveTrial: Người dùng có bản dùng thử đang hoạt động Google Cloud.
  • InactiveSubscription: Người dùng không có hoặc một gói thuê bao đang hoạt động.
subscription.expiration_date

Không bắt buộc

Ngày hết hạn của quyền này, theo Định dạng ISO 8601, bao gồm cả múi giờ. Để biết thêm thông tin, hãy xem Ngày hết hạn.

entitlements

Không bắt buộc

Thuộc tính gốc này chứa các giá trị entitlementId mà yêu cầu lưu giữ dữ liệu của người dùng.

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 dựa trên loại gói thuê bao.

Tài sản này chứa entitlementId. Để biết thêm thông tin, xem Giá trị nhận dạng quyền.

entitlements.expiration_date

Không bắt buộc

Ngày hết hạn của gói thuê bao này, theo Định dạng ISO 8601, bao gồm cả múi giờ. Để biết thêm thông tin, hãy xem 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ý vấn đề hết hạn ngày: subscription.expiration_dateentitlements.expiration_date. Bạn có thể bao gồm một trong hai hoặc không có, nhưng không thể bao gồm cả hai. Cách bạn sử dụng phụ thuộc vào mô hình gói thuê bao của bạn.

Mô hình gói thuê bao
Quyền truy cập vào danh mục phát trực tuyến của bạn là như nhau đối với tất cả người đăng ký. Vì bạn không cần chỉ định entitlements thuộc tính, 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ẽ thay đổi tuỳ theo thông tin chi tiết của 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 bậc hoặc tiện ích bổ sung hết hạn theo thời gian, hãy thực hiện một trong những thao tác sau:

  • Nếu tất cả giá trị entitlements.entitlement hết hạn lúc đồng thời, chỉ định subscription.expiration_date.
  • Nếu một số giá trị entitlements.entitlement hết hạn vào thời gian khác nhau, hãy chỉ định entitlements.expiration_date.

Câu trả lời mẫu

Sau đây là ví dụ về phản hồi cho nhiều trạng thái gói thuê bao:

  • Đă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 nhiều cấp hoặc gói bổ sung đang hoạt động

Đăng ký hoạt động

Gói thuê bao đang hoạt động

Một người dùng có một gói thuê bao example.com đang hoạt động. Trong phần này trong trường hợp đó, 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ọ là gì.


{
  "subscription" : {
    "type": "ActiveSubscription",
  }
}

Gói thuê bao đang hoạt động có ngày hết hạn

Gói thuê bao đang hoạt động có ngày hết hạn

Một người dùng có một gói thuê bao example.com đang hoạt động 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ý có quyền xem toàn bộ danh mục nội dung phát trực tuyến của bạn, bất kể họ có gói thuê bao hay không loại.


{
  "subscription" : {
    "type": "ActiveSubscription",
    "expiration_date": "2019-11-10T10:00:00Z"
  }
}

Không có gói thuê bao

Không có gói thuê bao

Một người dùng không có gói thuê bao example.com.


{
  "subscription" : {
    "type": "InactiveSubscription"
  }
}

Gói thuê bao nhiều cấp hoặc gói bổ sung đang hoạt động

Gói thuê bao nhiều cấp hoặc gói bổ sung đang hoạt động

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 số lượng yêu cầu

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. Người nhận trơn tru các truy vấn tối đa mỗi giây (QPS), Google phân phối các truy vấn đến điểm cuối của bạn đồng đều theo thời gian. Do đó, bạn có thể ước tính mức trung bình dự kiến QPS cho điểm cuối của bạn theo 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 số 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 này.

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 về URL của điểm cuối.

Thuộc tính thông số kỹ thuật về quyền truy cập vào hành động

Xem phần thuộc tính thông số kỹ thuật truy cập hành động để tham khảo của bạn.