Habilita el acceso automático en todas las apps y sitios web

Si tu app que usa Smart Lock para contraseñas comparte una base de datos de usuarios con tu o si su aplicación y su sitio web usan proveedores de acceso federados, como como Acceso con Google, puedes asociar la aplicación con el sitio web para que los usuarios guardan sus credenciales una vez y acceden automáticamente la aplicación y el sitio web.

Para asociar una app con un sitio web, declara las asociaciones. Para ello, aloja un archivo JSON de Vínculos de recursos digitales en tu sitio web. Agregar un vínculo al archivo de Vínculos de recursos digitales en el manifiesto de tu app

Si alojas una declaración de Vínculos de recursos digitales en tu sitio web, también habilitarás tu sitio web para compartir la función de autocompletar datos con tu app cuando se ejecuta en Android 8.0 y versiones posteriores.

Requisitos previos

El dominio de acceso de tu sitio web debe estar disponible a través de HTTPS.

Cómo asociar tu app con tu sitio web

  1. Crea un archivo JSON de Vínculos de recursos digitales.

    Por ejemplo, para declarar que el sitio web https://signin.example.com y una app para Android con el nombre de paquete com.example puede compartir el acceso credenciales, crea un archivo llamado assetlinks.json con los siguientes elementos: contenido:

    [{
      "relation": ["delegate_permission/common.get_login_creds"],
      "target": {
        "namespace": "web",
        "site": "https://signin.example.com"
      }
     },
     {
      "relation": ["delegate_permission/common.get_login_creds"],
      "target": {
        "namespace": "android_app",
        "package_name": "com.example",
        "sha256_cert_fingerprints": [
          "F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
        ]
      }
     }]
    

    El campo relation es un array de una o más cadenas que describen la relación que se declara. Para declarar que las apps y los sitios comparten credenciales de acceso, especifica la cadena delegate_permission/common.get_login_creds.

    El campo target es un objeto que especifica el recurso al que se aplica la declaración. Los siguientes campos identifican un sitio web:

    namespace web
    site

    La URL del sitio web, en el formato https://domain[:optional_port]; para Por ejemplo, https://www.example.com.

    domain debe estar completamente calificado. optional_port debe omitirse cuando se usa el puerto 443 para HTTPS

    Un destino site solo puede ser un dominio raíz: no puedes limitar una asociación de app a un subdirectorio específico. No incluyas un en la URL, como una barra final.

    No se considera que los subdominios coincidan, es decir, si especificas domain como www.example.com, el dominio www.counter.example.com no estará asociado a tu app.

    En los siguientes campos, se identifica una app para Android:

    namespace android_app
    package_name El nombre de paquete declarado en el manifiesto de la app. Por ejemplo: com.example.android.
    sha256_cert_fingerprints Las huellas digitales SHA256 del certificado de firma de tu app. Puedes usa el siguiente comando para generar la huella digital:
    $ keytool -list -v -keystore my-release-key.keystore

    Consulta la referencia de Vínculos de recursos digitales para conocer los detalles.

  2. Aloja el archivo JSON de Vínculos de recursos digitales en la siguiente ubicación del dominio de acceso:

    https://domain[:optional_port]/.well-known/assetlinks.json

    Por ejemplo, si el dominio de acceso es signin.example.com, aloja el archivo JSON en https://signin.example.com/.well-known/assetlinks.json.

    El tipo de MIME del archivo de Vínculos de recursos digitales debe ser JSON. Asegúrate de que el servidor envíe un encabezado Content-Type: application/json en la respuesta.

  3. Asegúrate de que tu host permita que Google recupere tu archivo de Vínculos de recursos digitales. Si tienes un archivo robots.txt, este debe permitir que el agente de Googlebot recupere /.well-known/assetlinks.json. La mayoría de los sitios pueden permitir que cualquier agente automatizado recupere archivos en la ruta de acceso /.well-known/ para que otros servicios puedan acceder a los metadatos en esos archivos:

    User-agent: *
    Allow: /.well-known/
    

  4. Declara la asociación en la app para Android.

    1. Agrega la siguiente línea al archivo de manifiesto en <application>:

        <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
      
    2. Agrega un recurso de cadenas asset_statements al archivo strings.xml. La cadena asset_statements es un objeto JSON que especifica los archivos assetlinks.json que se cargarán. Debes escapar cualquier apóstrofo y comillas que uses en la cadena. Por ejemplo:

        <string name="asset_statements" translatable="false">
        [{
          \"include\": \"https://signin.example.com/.well-known/assetlinks.json\"
        }]
        </string>
      
        > GET /.well-known/assetlinks.json HTTP/1.1
        > User-Agent: curl/7.35.0
        > Host: signin.example.com
      
        < HTTP/1.1 200 OK
        < Content-Type: application/json
      
  5. Publica la app en Google Play Store. Es necesario que se lance al público. para que se seleccionen las asociaciones.

  6. (Opcional) Complete y envíe la Formulario de afiliación de Smart Lock para contraseñas para indicar que asististe. a lo largo del proceso. Google verifica periódicamente si las afiliaciones enviados a través del formulario realmente funcionen y podrían comunicarse contigo en caso de problemas.

Cuando se complete la verificación, los usuarios de tu app podrán guardar sus credenciales en ya sea en tu app o sitio web, y acceder automáticamente a ambos.

Ejemplo: Asocia varias apps a un sitio web

Puedes asociar varias apps con un sitio web especificando cada app en la Archivo de Vínculos de recursos digitales. Por ejemplo, para asociar com.example y com.example.pro apps con el sitio en https://signin.example.com/; especificar ambas apps en el archivo JSON alojado en https://signin.example.com/.well-known/assetlinks.json:

[{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://signin.example.com"
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.pro",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
}]

Luego, declara la asociación en ambas apps:

  1. Agrega la siguiente línea al archivo de manifiesto en <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Agrega el siguiente recurso de cadenas al archivo strings.xml:

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

Ejemplo: Asocia apps con varios sitios web

Puedes asociar aplicaciones con varios sitios web especificando cada uno de ellos en el Archivo de Vínculos de recursos digitales y hosting del archivo en cada sitio web. Por ejemplo, para asociar las apps de com.example y com.example.pro con el sitio en https://signin.example.com/ y https://m.example.com/, especificar las apps y los dos sitios en el archivo JSON alojado en https://signin.example.com/.well-known/assetlinks.json:

[{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://signin.example.com"
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://m.example.com"
  },
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.pro",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
}]

Luego, en el archivo JSON alojado en https://m.example.com/.well-known/assetlinks.json, incluye la página principal Archivo de Vínculos de recursos:

[{
  "include": "https://signin.example.com/.well-known/assetlinks.json"
}]

Por último, declara la asociación en ambas apps:

  1. Agrega la siguiente línea al archivo de manifiesto en <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Agrega el siguiente recurso de cadenas al archivo strings.xml:

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