访问权限要求

用户更喜欢观看或收听他们已经可以访问的内容,例如 现有的订阅内容。如果 Google 知道用户可以查看哪些内容 对您的应用或平台的访问权限,Google 就可以构建出更好的搜索结果 或响应来将用户引导至相应内容。

图 1. 访问权限要求有助于订阅者访问 您的应用或平台上的内容。

确定内容访问权限要求

您必须确定每个内容包的访问权限要求, 目录。执行此操作时,请考虑以下问题:

  • 用户是否需要登录您的应用或平台才能访问相应内容?
  • 用户需要订阅吗?

    仅限观看操作

    • 用户是否需要从外部服务提供商处订阅?
    • 您提供分级订阅、多套餐订阅还是附加订阅?
  • 仅限观看操作:用户是否需要租借或购买内容?

  • 访问权限要求会随时间变化吗?

  • 访问权限要求是否取决于设备位置?

访问权限限制类型

访问限制分为两种:

付费墙类型

您可以按内容的付费墙类型限制对内容的访问。下表 详细说明了不同的付费墙类型:

付费墙类型 示例 类别
无需购买或登录。 Crackle nologinrequired
用户必须登录,但不需要付费订阅。 Vudu (AVOD) free
用户必须拥有有效的订阅。访问权限独立于 订阅层级 Netflix

subscription

用户必须拥有有效的订阅。访问权限取决于 订阅层级。 Hulu(附加服务)

subscription

内容仅可在 购买。 Vudu rental
内容在 购买。 Vudu purchase
此内容可通过有线电视订阅观看。 HBO Go externalSubscription

观看操作的付费墙类型

要为观看操作指定内容付费墙类型,请使用 category 属性(位于 操作访问规范

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

Listen Actions 的付费墙类型

要为 Listen Actions 指定内容付费墙类型,请使用 category 属性(位于 优惠对象

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

地理区域

您必须指定该内容在哪些地理区域可用。使用其中一个或 以下两个属性:

只要用户设备位置在 在 eligibleRegion 中指定,并且不在 ineligibleRegion

eligibleRegionineligibleRegion 属性允许执行以下操作 值:

如果内容可在全球范围内使用,请对 eligibleRegion

"eligibleRegion": "EARTH",

eligibleRegion 用例

以下是 eligibleRegion 属性的用例示例:

  • 示例 1:包含国家/地区列表的 eligibleRegion
  • 示例 2eligibleRegion,其中包含一个 GeoShape 对象, 包含邮政编码列表。
  • 示例 3eligibleRegion,其中包含一个 GeoShape 对象, 包含一系列转发分拣区 (FSA) 代码。
  • 示例 4eligibleRegion,其中包含一个 GeoShape 对象, 包含特定媒体市场区域 ID。
  • 示例 5:包含 GeoShape 对象列表的 eligibleRegion。 每个广告素材均包含一个特定媒体市场区域 ID。
  • 示例 6:包含屏蔽邮政编码的 ineligibleRegion

示例 1

eligibleRegion 替换为国家/地区列表:


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

示例 2

eligibleRegion,其中包含一个 GeoShape 对象, 包含邮政编码列表:


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

示例 3

eligibleRegion,其中包含一个 GeoShape 对象, 包含一系列转发分拣区 (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"
    ]
  }
}

示例 4

eligibleRegion,其中包含一个 GeoShape 对象, 包含特定媒体市场区域 ID:


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

示例 5

eligibleRegion:包含 GeoShape 对象列表。 每个广告素材均包含一个特定媒体市场区域 ID:


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

示例 6

包含屏蔽邮政编码的ineligibleRegion


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

使用权标识符

权限标识符 entitlementId 是指一个字符串,用来表示 访问媒体目录中的一组内容。为了确定用户是否 有权访问您的内容,那么 Google 会执行以下步骤:

  1. 我们会对您的网站进行 API 调用 授权端点 权限标识符。
  2. 我们会从您的媒体中查找内容所需的权限标识符 操作 Feed。
  3. 我们将用户的 entitlementIdidentifier 属性 媒体订阅对象。如果至少 一个 entitlementId 匹配,我们就确定该用户可以访问 内容。
图 2.与用户的某个权限标识符匹配 内容必需的权限标识符。

Google 建议您对 entitlementId 使用以下语法:

<domain name> + colon (:) + <access level to content>

语法示例:

  • example.com:basic
  • example.com:premium
  • example.com:sports

使用权标识符示例

MediaExampleCompany 的 Feed 指定 Movie XYZ 要求 example.com:basic entitlementId,如下所示:

{
  "@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
        ...
      },
      ...
    }
  },
  ...
}

常见访问用例

以下是常见的访问用例:

  • 免费(无需登录): 内容无需登录、订阅或购买即可观看。
  • 免费(需要登录): 内容要求用户登录,但不需要订阅。
  • 单层级订阅: 此内容需要订阅。所有订阅者都可以访问 内容,无论是电影还是剧集,无论其订阅情况如何 软件包。
  • 多层级订阅: 内容需要订阅。订阅者可以访问不同的内容 可以是电影还是剧集例如: 白银级黄金级
  • 附加订阅:内容 需要订阅。订阅者可以在自己的内容 常规订阅。
  • 一次性购买:内容可以 之后用户可以无限期使用。
  • 直播电视:订阅后即可获享 本地频道、全国频道和付费频道。
  • 第三方订阅: 该内容要求用户通过有线电视服务提供商登录。

免费(无需登录)

无需登录

此内容无需登录或订阅即可观看。


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "nologinrequired",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • category 设置为 nologinrequired
  • 请勿包含 expectAcceptanceOf

免费(需要登录)

需要登录

该内容要求用户登录,但不需要 订阅。


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • category 设置为 free
  • 请勿包含 expectAcceptanceOf

单层级订阅

在单层级订阅模式中,服务提供商有一个 订阅层级。所有订阅者均可访问相同的内容,无论 电影或剧集,无论其订阅套餐是什么。


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

多层级订阅

在分层订阅模式中,服务提供商有多个 订阅层级,如黄金级白银级青铜级。拥有较高层级订阅的用户可以访问所有 较低层级的内容但较低层级的用户 订阅无法访问上层内容。

图 3. 分层订阅模式及其 权益的表示形式。

请考虑以下场景:

  • Jane 订阅了黄金层级。您的使用权 端点返回以下 entitlementId 标识符: <ph type="x-smartling-placeholder">
      </ph>
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • John 订阅青铜层级。您的使用权 端点返回以下 entitlementId: <ph type="x-smartling-placeholder">
      </ph>
    • example.com:bronze
  • 您的媒体操作 Feed 说明了以下要求:
    • 电影 A 需要 example.com:bronze
    • 电影 B 需要 example.com:silver

在这种情况下,Google 会为小丽确定以下访问权限级别。 John:

  • Jane 和 John 都可以观看电影 A
  • Jane 可以访问电影 B,但 John 没有。
{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "requiresSubscription": {
      "@type": "MediaSubscription",
      "@id": "http://www.example.com/basic_subscription",
      "name": "Bronze",
      "commonTier": true
      ...
    },
    ...
  }
}

附加订阅

在附加服务订阅模式中,服务提供商允许用户 扩展其使用权,并将频道添加到基本订阅中。用户 可以根据需要添加任意数量的频道

图 4. 附加订阅模式及其 权益的表示形式。

请考虑以下场景:

  • 除了PRO 基本订阅。您的使用权端点会返回 以下 entitlementId 标识符: <ph type="x-smartling-placeholder">
      </ph>
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • John 只订阅了基本版。您的使用权 端点返回以下 entitlementId: <ph type="x-smartling-placeholder">
      </ph>
    • example.com:basic
  • 您的媒体操作 Feed 说明了以下要求:
    • 电影 A 需要 example.com:basic
    • 电影 B 需要 example.com:pro

在这种情况下,Google 会为小丽确定以下访问权限级别。 John:

  • Jane 和 John 都可以观看电影 A
  • Jane 可以访问电影 B,但 John 没有。
{
  "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
        }
    }
  }
}

一次性购买

购买

内容在 购买。


{
  "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/"
      }
    }
  }
}
  • category 设置为 purchase
  • expectAcceptanceOf包含在 actionAccessibilityRequirement用来表示 购买。

租借

内容仅可在 购买。


{
  "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/"
      }
    }
  }
}
  • category 设置为 rental
  • expectAcceptanceOf包含在 actionAccessibilityRequirement用来表示 租金。

电视直播

在媒体操作 Feed 中,您可以限制对直播电视的访问权限 channel事件 以下两个用户条件:

  • 用户的设备位置信息

    如需限制对该电视频道的访问权限,请指定用户所在的区域 可以访问。这种情况通常适用于本地广播 电视频道。

  • 用户的账号状态

    如果对电视频道的访问权限取决于用户的账号级设置, 使用 授权标识符 表示限制。

    此条件通常适用于以下用例:

    • 套装:全国性频道通常会被纳入 用户可以自行选择订阅哪个套餐
    • 附加服务:部分付费频道要求用户 有选择地将其他频道添加到他们的订阅中。
    • 区域性体育网络 (RSN):RSN 通常为 与用户的住宅关联位置。用户可以观看内容 即使出门在外,也可以在 RSN 上观看位置。

第三方订阅

第三方订阅

订阅者可通过其他服务观看此内容。


{
  "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"
    }
  }
}
  • 添加了 authenticator,以指明其他服务 对订阅者进行身份验证例如,HBO GO 要求 从有线电视提供商处获取订阅。

通用层级软件包

通用层级内容适用于所有订阅者,无论其 订阅套餐。通用层级适用于具有 category 的所有内容 共 subscription 个。如需详细了解 category 属性,请查看 付费墙类型部分。

为什么需要通用层级软件包?

多种 Google 产品提供电视和向用户推荐影片;这个 包括 Google 搜索、Android TV 和 Google 助理。要设置用户,请执行以下操作: Google 必须了解向所有用户提供何种内容 来增加订阅数量此外,Google 还必须了解 内容面向拥有特定订阅套餐的订阅者提供。

除非您支持通用层级,否则 Google 会推荐 entitlement API。 通过该 API,Google 可以了解每个特定类别的 所有文件。

何时应创建通用层级软件包?

如果您的服务提供 可供所有订阅者观看这包括仅提供一个套餐的服务 以及提供多个软件包或插件的服务

如果提供商不向所有订阅者提供内容,则无需创建 通用层级软件包例如,服务提供商在提供互斥信息时 所有文件包中的内容

通用层级示例

以下是通用层级的示例。

分层订阅

在分层订阅模式中,服务提供商有多个订阅 层级,例如黄金白银青铜层级。使用 较高层级的订阅可以访问较低层级的所有内容。用户 下层订阅用户无法访问上层内容 层级。下图是软件包结构的示例。

黄金级包含白银级的所有内容
            本身包含青铜级的所有级别。
图 5. 分层订阅套餐结构。

在下面的代码示例中,青铜级软件包是通用层级,因为 用户有权访问该层级中的所有内容。

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

附加内容

在附加订阅模式中,服务提供商允许用户扩展 用户享有使用权,并将频道添加到基本订阅中。用户可以添加为 可以随意挑选多个频道下图是 结构。

每位用户都从基本版开始,并可以选择添加
            PRO、Sportz 和 Moviemax 频道的任意组合。
图 6. 插件订阅包结构。

如果您的某个频道可供所有用户使用,并且 渠道,则可以将该软件包与通用层级软件包合并。

在下面的代码示例中,基本软件包是通用层级,因为 用户有权访问此包中的所有内容。

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

所含内容相互交叉的包裹

在文件包中包含相互作用的内容模型中,服务 提供商销售的内容包中包含其他包中的部分内容。通过 下图是软件包结构的示例。

维恩图,其中包 1、2 和 3 的重叠度为
            标记为“通用层级”
图 7. 包含交叉内容的软件包结构。

在下面的代码示例中,提供程序提供了三个软件包,其中一些软件包 内容在所有软件包中彼此交叉。在此例中,第四个软件包 代表通用层级是必填项。必须包含所有内容 这三个软件包都可用

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

包裹所含内容相交

在所有内容包都不相交的内容模型中,服务 提供商销售不含其他软件包中所含内容的软件包。通过 下图是软件包结构的示例。

软件包 1、2 和 3 是完全独立的。
图 8. 没有相交的软件包结构 内容。

在以下示例中,提供程序提供了三个不含内容的软件包 与所有软件包相交无需通用层级软件包。

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

使用权端点

使用本部分中的信息托管一个可返回 许可。

前提条件

开始之前,请验证您的服务是否支持 Google 的 OAuth 2.0 流程

请求

为了获得用户的使用权,Google 会发送一个包含 用户的 OAuth 令牌。您的端点需要根据 OAuth 识别用户 令牌。请参阅以下示例:

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>

响应

您的端点需要返回具有以下属性的响应:

属性
subscription

必需

这是根响应中的一个字段。

subscription.type

必需

此属性可能具有以下值:

  • ActiveSubscription:用户有有效订阅 。
  • ActiveTrial:用户当前在使用 提供商。
  • InactiveSubscription:用户没有有效的 订阅或正在试用。
subscription.expiration_date

可选

此使用权的到期日期,格式为 ISO 8601 格式、 (包含时区)有关详情,请参阅 失效日期

entitlements

可选

此根属性包含 entitlementId 值, 用户保全。

entitlements.entitlement

必需(如果对流式传输目录的访问权限有差异) 选择适合的存储服务

此属性包含 entitlementId。有关 请参阅 使用权标识符

entitlements.expiration_date

可选

此订阅的到期日期,以 ISO 8601 格式、 (包含时区)有关详情,请参阅 失效日期

失效日期

端点响应中有两个属性处理过期问题 日期:subscription.expiration_dateentitlements.expiration_date。您 可以包含其中一种或不包含,但不能同时包含这两种。具体使用哪种方式取决于 订阅模式

订阅模式
所有订阅者都可以访问您的在线播放目录。 因为您无需指定 entitlements 属性,请指定 subscription.expiration_date

对流式传输目录的访问权限会根据 用户的订阅。

如果您的订阅模式有多个层级或附加服务 请执行以下任一操作:

  • 如果所有 entitlements.entitlement 值在 同时指定subscription.expiration_date
  • 如果某些 entitlements.entitlement 值的到期时间为 则指定 entitlements.expiration_date

示例回复

以下是不同订阅状态的示例响应:

  • 有效订阅
  • 有效订阅(有到期日期)
  • 无订阅项目
  • 多个层级或附加服务的有效订阅

有效订阅

有效订阅

用户拥有 example.com 的有效订阅。在本课中, 在这种情况下,所有订阅者都可以访问你的整个流式传输目录 无论他们的订阅类型如何


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

有效订阅(有到期日期)

有效订阅,有到期日期

某用户已经订阅了 example.com,并且 订阅有失效日期。在这种情况下, 访问你的整个在线播放目录,无论其订阅情况如何 类型。


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

无订阅项目

无订阅

用户没有订阅 example.com


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

多个层级或附加服务的有效订阅

多个层级或附加服务的有效订阅

用户在某个日期之前订阅了 example.com:premium


{
  "subscription" : {
    "type": "ActiveSubscription",
  }
  "entitlements": [
    {
      "entitlement": "example.com:premium",
      "expiration": "2019-11-10T10:00:00Z"
    }
  ]
}

速率限制

Google 最多每 6 小时更新一次用户使用权信息。接收者 优化了每秒查询次数 (QPS), 会随时间推移均匀地发送到您的端点。因此,您可以估算 端点 QPS 的计算公式如下:

预期平均 QPS = <用户总数> / 21,600 秒(6 小时 x 60 分钟 x 60 秒)

如果您支持大量用户,Google 可以调整 6 小时间隔时间。 如有必要,请与 Google 联系以讨论配置事宜。

与 Google 联系

端点准备就绪后,请与 Google 联系,告知该端点的网址。

操作访问规范属性

请参阅 参考操作访问规范属性部分 信息。