Si el inicio de sesión con One Tap satisface sus necesidades, considere usarlo en su lugar. One Tap tiene una experiencia de usuario actualizada y otras mejoras.

Habilite el inicio de sesión automático en aplicaciones y sitios web

Si su aplicación que utiliza Smart Lock para contraseñas comparte una base de datos de usuarios con su sitio web, o si su aplicación y su sitio web utilizan proveedores de inicio de sesión federados como Google Sign-In, puede asociar la aplicación con el sitio web para que los usuarios guarden sus credenciales. una vez y luego inicie sesión automáticamente tanto en la aplicación como en el sitio web.

Para asociar una aplicación con un sitio web, declare asociaciones alojando un archivo JSON de enlaces de activos digitales en su sitio web y agregando un enlace al archivo de enlace de activos digitales en el manifiesto de su aplicación.

Al alojar una declaración de enlaces de activos digitales en su sitio web, también permite que su sitio web comparta datos de autocompletar con su aplicación cuando se ejecuta en Android 8.0 y versiones posteriores.

Prerrequisitos

El dominio de inicio de sesión de su sitio web debe estar disponible a través de HTTPS.

Asocie su aplicación con su sitio web

  1. Cree un archivo JSON de enlaces de activos digitales .

    Por ejemplo, para declarar que el sitio web https://signin.example.com y una aplicación de Android con el nombre de paquete com.example pueden compartir credenciales de inicio de sesión, cree un archivo llamado assetlinks.json con el siguiente 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 de relation es una matriz de una o más cadenas que describen la relación que se declara. Para declarar que las aplicaciones y los sitios comparten credenciales de inicio de sesión, especifique la cadena delegate_permission/common.get_login_creds .

    El campo de target es un objeto que especifica el activo 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 ] ; por ejemplo, https://www.example.com .

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

    El destino de un site solo puede ser un dominio raíz: no puede limitar la asociación de una aplicación a un subdirectorio específico. No incluya una ruta en la URL, como una barra al final.

    No se considera que los subdominios coincidan: es decir, si especifica el domain como www.example.com , el dominio www.counter.example.com no está asociado con su aplicación.

    Los siguientes campos identifican una aplicación de Android:

    namespace android_app
    package_name El nombre del paquete declarado en el manifiesto de la aplicación. Por ejemplo, com.example.android
    sha256_cert_fingerprints Las huellas digitales SHA256 del certificado de firma de su aplicación. Puede utilizar el siguiente comando para generar la huella digital:
    $ keytool -list -v -keystore my-release-key.keystore

    Consulte la referencia de enlaces de activos digitales para obtener más detalles.

  2. Aloje el archivo JSON de enlace de activos digitales en la siguiente ubicación del dominio de inicio de sesión:

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

    Por ejemplo, si su dominio de inicio de sesión es signin.example.com , aloje el archivo JSON en https://signin.example.com/.well-known/assetlinks.json .

    El tipo MIME para el archivo de enlace de activos digitales debe ser JSON. Asegúrese de que el servidor envíe un Content-Type: application/json en la respuesta.

  3. Asegúrese de que su anfitrión permita que Google recupere su archivo de enlace de activos digitales. Si tiene un archivo robots.txt , debe permitir que el agente del /.well-known/assetlinks.json recupere /.well-known/assetlinks.json . La mayoría de los sitios pueden simplemente permitir que cualquier agente automatizado recupere archivos en la ruta /.well-known/ para que otros servicios puedan acceder a los metadatos en esos archivos:

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

  4. Declare la asociación en la aplicación de Android.

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

        <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
      
    2. Agregue un asset_statements cadena strings.xml archivo strings.xml . La cadena asset_statements es un objeto JSON que especifica los archivos assetlinks.json que se cargarán. Debe evitar los apóstrofos y las comillas que utilice 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 aplicación en Google Play Store. Es necesario que se publique en el canal público para que las asociaciones sean recogidas.

  6. (Opcional) Complete y envíe el formulario de afiliación de Smart Lock para contraseñas para indicar que pasó por el proceso. Google comprueba periódicamente si las afiliaciones enviadas a través del formulario realmente funcionan y podría comunicarse con usted en caso de problemas.

Una vez completada la verificación, los usuarios de su aplicación pueden guardar sus credenciales en su aplicación o en su sitio web e iniciar sesión automáticamente en ambos.

Ejemplo: asociar varias aplicaciones a un sitio web

Puede asociar varias aplicaciones con un sitio web especificando cada aplicación en el archivo Enlace de activos digitales. Por ejemplo, para asociar las aplicaciones com.example y com.example.pro con el sitio en https://signin.example.com/ , especifique ambas aplicaciones 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, declare la asociación en ambas aplicaciones:

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

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

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

Ejemplo: asociar aplicaciones con varios sitios web

Puede asociar aplicaciones con varios sitios web especificando cada sitio web en el archivo Enlace de activos digitales y alojando el archivo en cada sitio web. Por ejemplo, para asociar las aplicaciones com.example y com.example.pro con el sitio en https://signin.example.com/ y https://m.example.com/ , especifique ambas aplicaciones y ambos 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 , incluya el archivo principal de enlaces de activos digitales:

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

Finalmente, declare la asociación en ambas aplicaciones:

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

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

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