ステートメント リストは、既知の場所にある JSON エンコードのファイルまたはスニペットです。
ステートメント リストの場所
このリストを保存する場所については、ステートメント リストの作成をご覧ください。
構文
ステートメント リストまたはスニペットは、1 つ以上のウェブサイトまたはアプリのステートメントを JSON オブジェクトとして含む JSON 配列で構成されます。これらのステートメントは任意の順序で含めることができます。一般的な構文は次のとおりです。
[
{
"relation": ["relation_string"],
"target": {target_object}
} , ...
]
- relation
- ターゲットに関して宣言される関係を記述する 1 つ以上の文字列の配列。定義されたリレーション文字列のリストをご覧ください。例:
delegate_permission/common.handle_all_urls
- ターゲット
- この文言が適用されるターゲット アセット。使用可能なターゲット タイプ:
-
ウェブサイトのターゲット
"target": {
"namespace": "web",
"site": "site_root_url"
}
- namespace
- ウェブサイトの場合は
web
にする必要があります。
- サイト
- ステートメントの対象となるサイトの URI。
http[s]://<hostname>[:<port>]
の形式で指定します。<hostname> は完全修飾形式です。HTTP の場合はポート 80、HTTPS の場合はポート 443 を使用する場合は <port> を省略する必要があります。ウェブサイトのターゲットにはルートドメインのみを指定できます。特定のサブディレクトリに限定することはできません。このルートの下のすべてのディレクトリが一致します。サブドメインは一致と見なされません。つまり、記述ファイルが www.example.com でホストされている場合、www.puppies.example.com は一致と見なされません。ウェブサイト ターゲット マッチングのルールと例については、ターゲットに関するドキュメントをご覧ください。例: http://www.example.com
-
Android アプリ ターゲット
"target": {
"namespace": "android_app",
"package_name": "fully_qualified_package_name",
"sha256_cert_fingerprints": ["cert_fingerprint"]
}
- namespace
- Android アプリの場合は
android_app
にする必要があります。
- package_name
- このステートメントが適用されるアプリの完全修飾パッケージ名。例:
com.google.android.apps.maps
- sha256_cert_fingerprints
- このステートメントが適用されるアプリの証明書の大文字の SHA265 フィンガープリント。次のように
openssl
または Java keytool
を使用して計算できます。
openssl x509 -in $CERTFILE -noout -fingerprint -sha256
keytool -printcert -file $CERTFILE | grep 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"]
。アプリで Play アプリ署名を使用している場合、keytool
または openssl
をローカルで実行することによって生成される証明書フィンガープリントは通常、ユーザーのデバイス上の証明書と一致しません。アプリで Play アプリ署名を使用しているかどうかは、Google Play Console デベロッパー アカウントの Release > Setup > App Integrity で確認できます。使用している場合は、同じページにアプリの正しいデジタル アセット リンクの JSON スニペットも表示されます。
ステートメント リストの例
ウェブサイトとアプリの両方に関する記述を含むウェブサイトの記述リストの例: http://example.digitalassetlinks.org/.well-known/assetlinks.json
多数のステートメントに拡張
場合によっては、プリンシパルが異なるターゲットについて多くの異なるステートメントを作成する必要がある場合や、同じターゲットのセットに対して異なるプリンシパルからステートメントを発行する必要がある場合があります。たとえば、あるウェブサイトが国ごとに多数の異なるトップレベル ドメインで提供されていて、どのドメインでも同じモバイルアプリについて 1 つの主張を行っている場合があります。
このような場合は、include ステートメントを使用すると便利です。
このメカニズムを使用すると、さまざまなプリンシパルから 1 つの中央の場所へのポインタを設定できます。これにより、すべてのプリンシパルのステートメントを定義できます。
たとえば、一元的な場所として「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>
ステートメントリストの形式と基本的な概念については、仕様書に詳しい説明があります。