示例:在多个网站和多个 Android 应用之间共享凭据

如需设置在多个网站和多个 Android 应用之间共享凭据,您必须执行以下操作:

  • 指定主网域:选择一个网址作为链接的主要参考点。
  • 创建 assetlinks.json 文件
    • 主网域:在主网域上创建 assetlinks.json 文件,其中列出共享凭据的所有网域。
    • 其他网域:在每个其他网域上创建一个 assetlinks.json 文件,每个文件都链接回主网域。
  • 在每个应用的清单中配置数字资产关联:将每个应用设置为链接回主网域中的 assetlinks.json 文件。

在以下示例中,我们将 example.com 指定为主网域,并且所有其他列出的网域都与 example.com 共享凭据,并且彼此之间也共享凭据。

以下两个软件包名称的应用还会与所有网站共享凭据,并在它们之间共享凭据:

  • com.example.android.myapplication
  • com.example.appname

在设置凭据共享之前,您必须满足前提条件

如需声明这些网站和 Android 应用之间共享凭据,请执行以下操作:

  1. 创建一个包含以下内容的 assetlinks.json 文件:

    [
      {
        "relation": ["delegate_permission/common.get_login_creds"],
        "target": {
          "namespace": "web",
          "site": "https://example.com"
        }
      },
      {
        "relation": ["delegate_permission/common.get_login_creds"],
        "target": {
          "namespace": "web",
          "site": "https://example.org"
        }
      },
      {
        "relation": ["delegate_permission/common.get_login_creds"],
        "target": {
          "namespace": "web",
          "site": "https://example.net"
        }
      },
      {
        "relation": ["delegate_permission/common.get_login_creds"],
        "target": {
          "namespace": "web",
          "site": "https://myownpersonaldomain.com"
        }
      },
      {
        "relation" : [
          "delegate_permission/common.get_login_creds"
        ],
        "target" : {
          "namespace" : "android_app",
          "package_name" : "com.example.android.myapplication",
          "sha256_cert_fingerprints" : [ "AA:BB:CC:DD:EE:FF:11:22:33:44:55:66:77:88:99:00:AA:BB:CC:DD:EE:FF:11:22:33:44:55:66:77:88:99:00"
          ]
        }
      },
      {
        "relation" : [
          "delegate_permission/common.get_login_creds"
        ],
        "target" : {
          "namespace" : "android_app",
          "package_name" : "com.example.appname",
          "sha256_cert_fingerprints" : [ "00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF"
          ]
        }
      }
    ]
    
  2. 将 Digital Asset Links JSON 文件托管在主网域上的相应众所周知的位置,在本例中为 https://example.com/.well-known/assetlinks.json

  3. 创建另一个包含以下内容的 assetlinks.json 文件:

    [
      {
        "relation": ["delegate_permission/common.get_login_creds"],
        "target": {
          "namespace": "web",
          "site": "example.com"
        }
      }
    ]
    
  4. 在其他网域的以下位置托管此 Digital Asset Links JSON 文件的副本,在本例中:

    • example.org/.well-known/assetlinks.json
    • example.net/.well-known/assetlinks.json
    • mypersonaldomain.com/.well-known/assetlinks.json
  5. 将以下代码行添加到两个 Android 应用清单文件的 <application> 下:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
    
  6. 在 Android 应用中声明关联,以便在清单中配置数字资产关联。添加一个对象,用于指定要加载的 assetlinks.json 文件。在此示例中:

    <string name="asset_statements" translatable="false">
    [{
      \"include\": \"https://example.com/.well-known/assetlinks.json\"
    }]
    </string>
    

按照上述步骤操作后,您已成功设置在多个网站和 Android 应用中无缝共享凭据。