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
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 paquetecom.example
pueden compartir credenciales de inicio de sesión, cree un archivo llamadoassetlinks.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 cadenadelegate_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 dominiowww.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.
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 enhttps://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.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/
Declare la asociación en la aplicación de Android.
Agregue la siguiente línea al archivo de manifiesto en
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Agregue un
asset_statements
cadenastrings.xml
archivostrings.xml
. La cadenaasset_statements
es un objeto JSON que especifica los archivosassetlinks.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
Publica la aplicación en Google Play Store. Es necesario que se publique en el canal público para que las asociaciones sean recogidas.
(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:
Agregue la siguiente línea al archivo de manifiesto en
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
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:
Agregue la siguiente línea al archivo de manifiesto en
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
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>