用户更喜欢观看或收听他们已经可以访问的内容,例如 现有的订阅内容。如果 Google 知道用户可以查看哪些内容 对您的应用或平台的访问权限,Google 就可以构建出更好的搜索结果 或响应来将用户引导至相应内容。
![](https://developers.google.cn/static/actions/media/images/image-entitlements-4.png?authuser=0&hl=zh-cn)
确定内容访问权限要求
您必须确定每个内容包的访问权限要求, 目录。执行此操作时,请考虑以下问题:
- 用户是否需要登录您的应用或平台才能访问相应内容?
用户需要订阅吗?
仅限观看操作:
- 用户是否需要从外部服务提供商处订阅?
- 您提供分级订阅、多套餐订阅还是附加订阅?
仅限观看操作:用户是否需要租借或购买内容?
访问权限要求会随时间变化吗?
访问权限要求是否取决于设备位置?
访问权限限制类型
访问限制分为两种:
付费墙类型
您可以按内容的付费墙类型限制对内容的访问。下表 详细说明了不同的付费墙类型:
付费墙类型 | 示例 | 类别 |
---|---|---|
无需购买或登录。 | Crackle | nologinrequired |
用户必须登录,但不需要付费订阅。 | Vudu (AVOD) | free |
用户必须拥有有效的订阅。访问权限独立于 订阅层级 | Netflix |
|
用户必须拥有有效的订阅。访问权限取决于 订阅层级。 | Hulu(附加服务) |
|
内容仅可在 购买。 | 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
。
eligibleRegion
和 ineligibleRegion
属性允许执行以下操作
值:
- 一系列
Country
,City
和State
。 GeoShape
对象。请参阅GeoShape
属性 了解详细要求。GeoShape
对象的列表。
如果内容可在全球范围内使用,请对
eligibleRegion
:
"eligibleRegion": "EARTH",
eligibleRegion 用例
以下是 eligibleRegion
属性的用例示例:
- 示例 1:包含国家/地区列表的
eligibleRegion
。 - 示例 2:
eligibleRegion
,其中包含一个GeoShape
对象, 包含邮政编码列表。 - 示例 3:
eligibleRegion
,其中包含一个GeoShape
对象, 包含一系列转发分拣区 (FSA) 代码。 - 示例 4:
eligibleRegion
,其中包含一个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 会执行以下步骤:
- 我们会对您的网站进行 API 调用 授权端点 权限标识符。
- 我们会从您的媒体中查找内容所需的权限标识符 操作 Feed。
- 我们将用户的
entitlementId
与identifier
属性 媒体订阅对象。如果至少 一个entitlementId
匹配,我们就确定该用户可以访问 内容。
![](https://developers.google.cn/static/actions/media/images/image-entitlements-5.png?authuser=0&hl=zh-cn)
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" } } }
多层级订阅
在分层订阅模式中,服务提供商有多个 订阅层级,如黄金级、白银级和 青铜级。拥有较高层级订阅的用户可以访问所有 较低层级的内容但较低层级的用户 订阅无法访问上层内容。
![](https://developers.google.cn/static/actions/media/images/image-entitlements-2.png?authuser=0&hl=zh-cn)
请考虑以下场景:
- 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
。
- 电影 A 需要
在这种情况下,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 ... }, ... } }
附加订阅
在附加服务订阅模式中,服务提供商允许用户 扩展其使用权,并将频道添加到基本订阅中。用户 可以根据需要添加任意数量的频道
![](https://developers.google.cn/static/actions/media/images/image-entitlements-3.png?authuser=0&hl=zh-cn)
请考虑以下场景:
- 除了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
。
- 电影 A 需要
在这种情况下,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
用来表示 租金。
电视直播
第三方订阅
第三方订阅
订阅者可通过其他服务观看此内容。
{ "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 可以了解每个特定类别的 所有文件。
何时应创建通用层级软件包?
如果您的服务提供 可供所有订阅者观看这包括仅提供一个套餐的服务 以及提供多个软件包或插件的服务
如果提供商不向所有订阅者提供内容,则无需创建 通用层级软件包例如,服务提供商在提供互斥信息时 所有文件包中的内容
通用层级示例
以下是通用层级的示例。
分层订阅
在分层订阅模式中,服务提供商有多个订阅 层级,例如黄金、白银和青铜层级。使用 较高层级的订阅可以访问较低层级的所有内容。用户 下层订阅用户无法访问上层内容 层级。下图是软件包结构的示例。
![黄金级包含白银级的所有内容
本身包含青铜级的所有级别。](https://developers.google.cn/static/actions/media/images/tieredsub.png?authuser=0&hl=zh-cn)
在下面的代码示例中,青铜级软件包是通用层级,因为 用户有权访问该层级中的所有内容。
"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 频道的任意组合。](https://developers.google.cn/static/actions/media/images/addonssub.png?authuser=0&hl=zh-cn)
如果您的某个频道可供所有用户使用,并且 渠道,则可以将该软件包与通用层级软件包合并。
在下面的代码示例中,基本软件包是通用层级,因为 用户有权访问此包中的所有内容。
"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 的重叠度为
标记为“通用层级”](https://developers.google.cn/static/actions/media/images/intersect.png?authuser=0&hl=zh-cn)
在下面的代码示例中,提供程序提供了三个软件包,其中一些软件包 内容在所有软件包中彼此交叉。在此例中,第四个软件包 代表通用层级是必填项。必须包含所有内容 这三个软件包都可用
"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 是完全独立的。](https://developers.google.cn/static/actions/media/images/nointersect.png?authuser=0&hl=zh-cn)
在以下示例中,提供程序提供了三个不含内容的软件包 与所有软件包相交无需通用层级软件包。
"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 |
必需 此属性可能具有以下值:
|
subscription.expiration_date |
可选 此使用权的到期日期,格式为 ISO 8601 格式、 (包含时区)有关详情,请参阅 失效日期。 |
entitlements |
可选 此根属性包含 |
entitlements.entitlement |
必需(如果对流式传输目录的访问权限有差异) 选择适合的存储服务 此属性包含 |
entitlements.expiration_date |
可选 此订阅的到期日期,以 ISO 8601 格式、 (包含时区)有关详情,请参阅 失效日期。 |
失效日期
端点响应中有两个属性处理过期问题
日期:subscription.expiration_date
和 entitlements.expiration_date
。您
可以包含其中一种或不包含,但不能同时包含这两种。具体使用哪种方式取决于
订阅模式
订阅模式 | |
---|---|
所有订阅者都可以访问您的在线播放目录。 | 因为您无需指定 entitlements
属性,请指定 subscription.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 联系,告知该端点的网址。
操作访问规范属性
请参阅 参考操作访问规范属性部分 信息。