Ejemplo: Comparte credenciales en varios sitios web y apps para Android

Para configurar el uso compartido de credenciales en varios sitios web y varias apps para Android, debes hacer lo siguiente:

  • Designa un dominio principal: Elige una URL como el punto de referencia principal para los vínculos.
  • Crear archivos assetlinks.json:
    • Dominio principal: Crea un archivo assetlinks.json en tu dominio principal que enumere todos los dominios que comparten credenciales.
    • Otros dominios: Crea un archivo assetlinks.json en cada uno de los otros dominios, cada uno de los cuales se vincula al dominio principal.
  • Configura la vinculación de recursos digitales en el manifiesto de cada app: Configura cada app para que se vincule al archivo assetlinks.json en el dominio principal.

En el siguiente ejemplo, designamos example.com como el dominio principal, y todos los demás dominios enumerados comparten credenciales con example.com y entre sí.

Las dos apps con los siguientes nombres de paquete también comparten credenciales con todos los sitios web y entre ellas:

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

Antes de configurar el uso compartido de credenciales, debes completar los requisitos previos.

Para declarar el uso compartido de credenciales en estos sitios web y apps para Android, sigue estos pasos:

  1. Crea un archivo assetlinks.json con el siguiente contenido:

    [
      {
        "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. Aloja el archivo JSON de Vínculos de recursos digitales en la ubicación conocida correspondiente del dominio principal, en este caso: https://example.com/.well-known/assetlinks.json.

  3. Crea otro archivo assetlinks.json con el siguiente contenido:

    [
      {
        "relation": ["delegate_permission/common.get_login_creds"],
        "target": {
          "namespace": "web",
          "site": "example.com"
        }
      }
    ]
    
  4. Aloja copias de este archivo JSON de Vínculos de recursos digitales en la siguiente ubicación en los otros dominios, en este caso:

    • example.org/.well-known/assetlinks.json
    • example.net/.well-known/assetlinks.json
    • mypersonaldomain.com/.well-known/assetlinks.json
  5. Agrega la siguiente línea a ambos archivos de manifiesto de apps para Android en <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
    
  6. Para configurar la vinculación de recursos digitales en el manifiesto, declara la asociación en la app para Android. Agrega un objeto que especifique los archivos assetlinks.json que se cargarán. En este caso, ocurre lo siguiente:

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

Después de seguir estos pasos, habrás configurado correctamente el uso compartido de credenciales sin problemas en varios sitios web y apps para Android.