Package google.digitalassetlinks.v1

索引

语句

此 API 服务提供“语句”,这是资产所有者用于发布其资产链接信息的工具。该 API 可用来以简单安全的方式检索语句,而无需直接从来源获取语句。

此 API 返回的所有声明都已代表其他数字资产的数字资产(例如网站或 Android 应用)做出。每个语句都包含一个源资产、一个目标资产以及一个或多个关系。

这种关系描述的是来源资产所声明的两项资产之间的关系。此类关系的一个示例是授权或权限委托。

列表

rpc List(ListRequest) returns (ListResponse)

检索指定来源中与指定目标和语句字符串匹配的所有语句的列表。

该 API 可保证所有具有安全来源素材资源(例如 HTTPS 网站或 Android 应用)的声明都由这些素材资源的所有者以安全的方式完成,如 Digital Asset Links 技术设计规范中所述。具体来说,您应该考虑到,对于不安全的网站(即,网址以 http:// 而不是 https:// 开头),我们无法保证做出此声明。

如果 API 客户端想了解两个素材资源彼此相关的所有方式,或枚举特定来源素材资源的所有关系,那么 List 命令会非常有用。示例:一项帮助用户导航到相关商品的功能。当移动应用在设备上运行时,您可以通过该功能轻松导航至相应的网站或 Google+ 个人资料。

AndroidAppAsset

描述 Android 应用资产。

字段名称 类型 说明
package_name string Android 应用资源通过其 Java 软件包名称自然标识。例如,Google 地图应用使用软件包名称 com.google.android.apps.maps。必需
certificate CertificateInfo

由于没有针对软件包名称唯一性的全局强制性要求,我们还需要一个签名证书,该证书与软件包名称相关联可唯一标识应用。

某些应用的签名密钥会轮替,因此它们可能会随着时间的推移被不同的密钥签名。我们会将这些资产视为不同的资产,因为我们使用(软件包名称、证书)作为唯一 ID。这样做通常不会造成任何问题,因为应用的两个版本都会做出相同或相似的声明。但是,对轮替应用做出其他声明的资产必须在轮替密钥时进行更新。

(请注意,发布和查询语句的语法包含语法糖,这样您就能轻松指定多个证书已知的应用。)必需

证书信息

描述 X509 证书。

字段名称 类型 说明
sha256_fingerprint string

证书的大写 SHA-265 指纹。可以通过以下方式获取 PEM 证书:

$ keytool -printcert -file $CERTFILE | grep SHA256:
SHA256: 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83: \
    42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

或如下所示:

$ openssl x509 -in $CERTFILE -noout -fingerprint -sha256
SHA256 Fingerprint=14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64: \
    16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

在此示例中,此字段的内容将为 14:6D:E9:83:C5:73: 06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF: 44:E5

如果您无法使用这些工具,则可以将 PEM 证书转换为 DER 格式,计算该字符串的 SHA-256 哈希值,并将结果表示为一个十六进制字符串(即每个八位字节的大写十六进制形式,以英文冒号分隔)。

资产

资产的唯一标识。

数字资产是一个具有明确特征且可寻址的在线实体,通常可提供某些服务或内容。例如网站、Android 应用、Twitter Feed 和 Google+ 信息页等。

字段名称 类型 说明
联合字段,只能是下列其中一项:
web WebAsset 如果这是网站资产,请设置。
android_app AndroidAppAsset 如果这是 Android 应用素材资源,请设置。

CheckRequest

用于检查是否存在特定素材资源链接的消息。

字段名称 类型 说明
source Asset 托管语句列表的来源。这用于将 Check() 调用路由到适当的来源。
relation string

关系的查询字符串。

我们使用 <kind>/<detail> 格式的字符串来标识关系,其中 <kind> 必须是一组预定义的用途类别之一,<detail> 是描述语句特定用例的自由小写字母数字字符串。

如需查看支持的关系的最新列表,请参阅我们的 API 文档

对于要与资源链接匹配的查询,查询和资源链接的关系字符串必须完全匹配。

示例:具有关系 delegate_permission/common.handle_all_urls 的查询与关系 delegate_permission/common.handle_all_urls 的素材资源链接匹配。

target Asset 语句的目标资产。

CheckResponse

CheckAssetLinks 调用的响应消息。

字段名称 类型 说明
linked bool 如果请求中指定的资源通过请求中指定的关系关联,则设置为 true。必需
max_age Duration 从传送时间算起,除非进一步更新,否则应视为响应的有效时间。必需
debug_string string

简单易懂的消息,包含旨在帮助最终用户了解、重现和调试结果的信息。

此消息将采用英语,目前我们不打算提供任何翻译。

请注意,关于此字符串的内容或格式,我们不做任何保证。我们可能会在未事先通知您的情况下更改方方面面。您不应尝试以编程方式解析此数据。如果您认为 API 未披露您需要的信息,因而需要您执行此操作,请先与我们联系。

ListRequest

用于请求具有指定来源和关系的所有已知语句的消息。

字段名称 类型 说明
source Asset 托管语句列表的来源。这用于将 List() 请求定向到正确的来源。必需
relation string

仅使用与指定关系匹配的关联。

如需详细了解关系字符串,请参阅 Statement 消息。

如需使查询与语句匹配,必须满足以下条件之一:

  • 查询和语句的关系字符串完全匹配,或者
  • 查询的相关字符串为空或缺失。

示例:具有关系 delegate_permission/common.handle_all_urls 的查询与关系 delegate_permission/common.handle_all_urls 的素材资源链接匹配。

ListResponse

List 调用的响应消息。

字段名称 类型 说明
statements Statement 找到的所有匹配语句的列表。
max_age Duration 从传送时间算起,除非进一步更新,否则应视为响应的有效时间。必需
debug_string string

简单易懂的消息,包含旨在帮助最终用户了解、重现和调试结果的信息。

此消息将采用英语,目前我们不打算提供任何翻译。

请注意,关于此字符串的内容或格式,我们不做任何保证。我们可能会在未事先通知您的情况下更改方方面面。您不应尝试以编程方式解析此数据。如果您认为 API 未披露您需要的信息,因而需要您执行此操作,请先与我们联系。

语句

描述已就源资产与目标资产之间关系做出的可靠陈述。

语句始终由来源资产直接创建,或直接委托至存储在其他位置的语句列表。

如需详细了解语句和素材资源,请参阅我们的 API 文档着陆页

字段名称 类型 说明
source Asset 每个语句都有一个源资产。必需
relation string

相关关系可以按照来源资产所有者(即声明的个人或实体)的预期,标识对语句的使用。每个完整的语句都有关联。

我们使用 <kind>/<detail> 格式的字符串来标识关系,其中 <kind> 必须是一组预定义的用途类别之一,<detail> 是描述语句特定用例的自由小写字母数字字符串。

如需查看支持的关系的最新列表,请参阅我们的 API 文档

示例:delegate_permission/common.handle_all_urls 必需

target Asset 每个语句都有一个目标素材资源。必需

网络资产

描述网站资产。

字段名称 类型 说明
site string

网络资源由仅包含架构、主机名和端口部分的网址标识。格式为

http[s]://<hostname>[:<port>]

主机名必须是完全限定的:必须以单个英文句点(“.”)结尾。

目前只允许使用“http”和“https”架构。

端口号采用十进制数字,如果使用标准端口号,则必须省略:http 为 80,https 为 443。

我们将这个受限网址称为“网站”。所有具有相同架构、主机名和端口的网址均被视为网站的一部分,因而属于网站资产。

示例:网站为 https://www.google.com 的素材资源包含所有以下网址:

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com/

但不包含以下网址:

  • http://www.google.com/(架构错误)
  • https://google.com/(主机名不匹配)
  • https://www.google.com:444/(端口不匹配)必需