Descripción general
El protocolo y la API de Digital Asset Links permiten que una app o un sitio web realicen declaraciones públicas y verificables sobre otras apps o sitios web. Por ejemplo, un sitio web puede declarar que está asociado con una app para Android específica o que desea compartir credenciales de usuario con otro sitio web.
Estos son algunos usos posibles de los Vínculos de recursos digitales:
- El sitio web A declara que los vínculos a su sitio deben abrirse en una app designada en dispositivos móviles, si la app está instalada.
- El sitio web A declara que puede compartir sus credenciales de usuario de Chrome con el sitio web B para que el usuario no tenga que acceder al sitio web B si accedió al sitio web A.
- La app A declara que puede compartir la configuración del dispositivo, como la ubicación, con el sitio web B.
Términos clave
- Principal: La principal es la app o el sitio web que realiza la declaración. En Digital Asset Links, la entidad principal siempre es la app o el sitio web que aloja la lista de declaraciones.
- Lista de sentencias: Las sentencias se incluyen en una lista de sentencias que contiene una o más sentencias. Una lista de sentencias es de texto no cifrado y de acceso público, en una ubicación controlada por la entidad principal y difícil de suplantar o manipular. Puede ser un archivo independiente o una sección de otro elemento más grande. Por ejemplo, en un sitio web, es un archivo completo; en una app para Android, es una sección del manifiesto de la app. Cualquier persona puede ver y verificar las declaraciones con métodos no propietarios. Consulta la documentación de la lista de instrucciones para obtener más información.
- Declaración: Una declaración es una construcción JSON muy estructurada que consta de una relación (lo que la declaración dice que se debe hacer, por ejemplo: Habilitar el uso compartido de credenciales) y un destino (el sitio web o la app a los que se aplica la relación). Por lo tanto, cada declaración es como una oración en la que principal dice relación sobre objetivo.
- Consumidor de la declaración: Un consumidor de la declaración solicita una lista de declaraciones de un principal, verifica la presencia de una declaración en relación con un principal determinado y, si existe, puede realizar la acción especificada. Consulta la documentación sobre el consumo de la declaración para obtener más información.
Ejemplo de uso rápido
Este es un ejemplo muy simplificado de cómo el sitio web www.example.com podría usar vínculos de recursos digitales para especificar que cualquier vínculo a URLs en ese sitio debe abrirse en una app designada en lugar del navegador:
- El sitio web www.example.com publica una lista de instrucciones en https://www.example.com/.well-known/assetlinks.json. Este es el nombre y la ubicación oficiales de una lista de declaraciones en un sitio. Las listas de declaraciones en cualquier otra ubicación o con cualquier otro nombre no son válidas para este sitio. En nuestro ejemplo, la lista de sentencias consta de una sentencia que otorga a su app para Android el permiso para abrir vínculos en su sitio:
Una lista de sentencias admite un array de sentencias dentro de los corchetes [ ], pero nuestro archivo de ejemplo contiene solo una sentencia.[{ "relation": ["delegate_permission/common.handle_all_urls"], "target" : { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": ["hash_of_app_certificate"] } }]
sha256_cert_fingerprints
son las huellas digitales SHA256 del certificado de firma de tu app. Encuentra más detalles en la documentación de Android App Links. - La app para Android que se menciona en la declaración anterior tiene un filtro de intents que especifica el esquema, el host y el patrón de ruta de acceso de las URLs que desea controlar: en este caso, https://www.example.com. El filtro de intents incluye un atributo especial
android:autoVerify
, nuevo en Android M, que indica que Android debe verificar la declaración en el sitio web que se describe en el filtro de intents cuando se instala la app. - Un usuario instala la app. Android ve el filtro de intents con el atributo
autoVerify
y verifica la presencia de la lista de declaraciones en el sitio especificado. Si está presente, Android verifica si ese archivo incluye una declaración que otorga el control de vínculos a la app y verifica la app en relación con la declaración por el hash del certificado. Si todo está en orden, Android reenviará los intents de https://www.example.com a la app de example.com. - El usuario hace clic en un vínculo a https://www.example.com/puppies en su dispositivo. Este vínculo puede estar en cualquier lugar: en un navegador, en una sugerencia de Google Search Appliance o en cualquier otro lugar. Android reenvía el intent a la app de example.com.
- La app de example.com recibe el intent y decide controlarlo, por lo que abre la página de cachorros en la app. Si, por algún motivo, la app hubiera rechazado controlar el vínculo o si no estuviera en el dispositivo, el vínculo se habría enviado al siguiente controlador de intents predeterminado que coincidiera con ese patrón de intent (a menudo, el navegador).
Consideraciones y limitaciones importantes:
- El protocolo no autentica a la principal que realiza la declaración, pero la declaración se encuentra en una ubicación específica asociada de forma sólida con la principal y bajo el control de la principal.
- El protocolo no autentica el destino de la declaración, pero proporciona un medio para que el llamador autentique el destino (por ejemplo, una declaración identifica los destinos de apps para dispositivos móviles por el hash del certificado y el nombre del paquete).
- El protocolo no realiza de forma nativa ninguna acción de declaración, sino que permite exponer declaraciones, que una aplicación consumidora debe validar y, luego, decidir si debe actuar en consecuencia y cómo hacerlo. Android M realiza estos pasos de forma nativa. Por ejemplo, si un sitio web delega el control de vínculos a una app específica, Android verifica la declaración, verifica la app de destino y, luego, le ofrece a la app la opción de controlar el vínculo determinado.
- El protocolo no permite hacer declaraciones sobre dos terceros, es decir, el sitio web A puede hacer una declaración sobre el sitio web B, pero no puede hacer una declaración sobre la relación del sitio web B con el sitio web C. Sin embargo, si el sitio web B confía en el sitio web A, puede consultar el sitio web A para ver una declaración que otorgue permiso al sitio web C y decidir implementar eso.