Синтаксис списка операторов

Список операторов — это файл или фрагмент в формате JSON, находящийся в известном месте.

Расположение списка заявлений

Информацию о том, где следует хранить этот список, см. в разделе Создание списка операторов .

Синтаксис

Список операторов или фрагмент представляет собой JSON-массив, содержащий один или несколько операторов веб-сайта или приложения в виде JSON-объектов. Эти операторы могут располагаться в любом порядке. Ниже представлен общий синтаксис:

[
  {
    "relation": ["relation_string"],
    "target": {target_object}
  } , ...
]
связь
Массив из одной или нескольких строк, описывающих объявляемое отношение к целевому объекту. См. список определённых строк отношения . Пример: delegate_permission/common.handle_all_urls
цель
Целевой актив, к которому относится это утверждение. Доступные типы целей:
relation_extensions (необязательно)

Вы можете добавить необязательное поле relation_extensions в оператор, чтобы предоставить дополнительную информацию о разрешениях и связях, которые вы хотите предоставить. Это поле должно быть объектом, где каждый ключ — строка отношения, а значение — объект, содержащий расширения для этого отношения. Клиенты, запрашивающие эти операторы, должны быть обновлены для поддержки этих полей.

Например, relation_extensions для отношения delegate_permission/common.handle_all_urls может выглядеть так:

  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example.app",
      "sha256_cert_fingerprints": ["..."]
    },
    "relation_extensions": {
      "delegate_permission/common.handle_all_urls": {...}
    }
  }
  

API DAL поддерживает возврат relation_extensions в вызовах API, если в запросе установлен параметр return_relation_extensions=true .

Пример списка утверждений

Вот пример списка заявлений о веб-сайте, который содержит заявления как о веб-сайтах, так и о приложениях: http://example.digitalassetlinks.org/.well-known/assetlinks.json

Масштабирование до десятков утверждений и более

В некоторых случаях принципал может захотеть сделать несколько разных заявлений о разных целевых объектах, или может возникнуть необходимость в том, чтобы разные принципалы опубликовали заявления для одного и того же набора целевых объектов. Например, веб-сайт может быть доступен на нескольких доменах верхнего уровня в каждой стране, и все они могут захотеть сделать заявление об одном и том же мобильном приложении.

В таких ситуациях могут быть полезны операторы include . Используя этот механизм, вы можете настроить указатели из множества различных субъектов на один центральный объект, где определяются операторы для всех субъектов.

Например, вы можете решить, что центральным местоположением будет `https://example.com/includedstatements.json`. Этот файл можно настроить так, чтобы он содержал тот же контент, что и в примерах выше.

Чтобы настроить указатель с веб-сайта на включаемый файл, измените `https://example.com/.well-known/assetlinks.json` на:

[{
  "include": "https://example.com/includedstatements.json"
}]

Чтобы настроить указатель из приложения Android на включаемый файл, измените `res/values/strings.xml` на:

<resources>
  ...
  <string name="asset_statements">
    [{
      \"include\": \"https://example.com/includedstatements.json\"
    }]
  </string>
</resources>

Дополнительная информация

Более подробное объяснение формата списка операторов и базовых концепций приведено в нашем документе спецификации .