Primeros pasos
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Descripción general
El protocolo y la API de Vínculos de recursos digitales 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 puede declarar que quiere compartir credenciales de usuario con otro sitio web.
A continuación, se incluyen 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 para dispositivos móviles, si esta 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 parámetros de configuración del dispositivo, como la ubicación, con el sitio web B.
Términos clave
- Principal: El principal es la app o el sitio web que realiza la declaración. En los vínculos de recursos digitales, el principal es siempre la app o el sitio web que aloja la lista de instrucciones.
- Lista de declaraciones: Las declaraciones se encuentran en una lista de declaraciones que contiene una o más declaraciones. Una lista de declaraciones es de texto simple y de acceso público, en una ubicación controlada por la principal y que es difícil de falsificar 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 a través de métodos que no son privados. Consulta la documentación de la lista de declaraciones para obtener más información.
- Afirmación: Una sentencia es una construcción JSON altamente estructurada que consiste en una relation (lo que la instrucción dice que debe hacer, por ejemplo, habilitar el uso compartido de credenciales) y un relation (el sitio web o la app a los que se aplica la relación). Por lo tanto, cada sentencia es como una oración, en la que la principal dice relación sobre el objetivo.
- Consumidor de estados de cuenta: Un consumidor de sentencias solicita una lista de declaraciones de una principal, comprueba la presencia de una sentencia en relación con una principal determinada y, si existe, puede realizar la acción especificada. Consulta la declaración con la que se resume la documentación para obtener más información.
Ejemplo de uso rápido
A continuación, se incluye 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 de ese sitio debe abrirse en una app designada en lugar del navegador:
- El sitio web www.example.com publica una lista de sentencias en
https://www.example.com/.well-known/assetlinks.json. Estos son el nombre y la ubicación oficiales de una lista de estados de cuenta 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 declaraciones consta de una declaración que otorga a su app para Android el permiso de abrir vínculos en su sitio:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target" : { "namespace": "android_app", "package_name": "com.example.app",
"sha256_cert_fingerprints": ["hash_of_app_certificate"] }
}]
Una lista de declaraciones admite un array de declaraciones dentro de las marcas [ ], pero nuestro archivo de ejemplo contiene solo una.
sha256_cert_fingerprints
son las huellas digitales SHA256 del certificado de firma de tu app.
Obtén más detalles en la documentación de Android App Links.
- La app para Android mencionada en la instrucción anterior tiene un filtro de intents que especifica el esquema, el host y el patrón de ruta de las URLs que quiere controlar: en este caso, https://www.example.com. El filtro de intents incluye un atributo especial
android:autoVerify
, nuevo para Android M, que indica que Android debe verificar la declaración en el sitio web descrito 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 comprueba la presencia de la lista de declaraciones en el sitio especificado. Si está presente, Android verifica si ese archivo incluye una declaración que otorgue el control de vínculos a la app y verifica la app con la declaración mediante el hash de certificado. Si todo está bien, Android reenviará los intents https://www.example.com a la app example.com.
- El usuario hace clic en un vínculo a https://www.example.com/cachorros en su dispositivo. El 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 example.com.
- La app example.com recibe el intent y elige controlarlo, abriendo la página de cachorros en la app. Si, por algún motivo, la app rechazó el vínculo o si no estuviera en el dispositivo, el vínculo se habría enviado al siguiente controlador de intents predeterminado que coincide con ese patrón de intents (a menudo, el navegador).
Consideraciones y limitaciones importantes:
- El protocolo no autentica a la principal que realiza la
declaración, pero esta se encuentra en una ubicación específica
estrechamente asociada con la principal y bajo el control de esta.
- El protocolo no autentica el destino de la declaración, pero proporciona un medio para que el emisor lo autentique (por ejemplo, una declaración identifica objetivos de apps para dispositivos móviles por el hash del certificado y el nombre del paquete).
- El protocolo no realiza ninguna acción de instrucciones de forma nativa, sino que permite exponer declaraciones, que una aplicación consumidora debe validar y, luego, decidir si actuar 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 comprueba y verifica la sentencia, verifica la app de destino y, luego, le ofrece a la app la opción de controlar el vínculo en cuestión.
- El protocolo no permite hacer declaraciones sobre dos terceros: es decir, el sitio web A puede hacer una afirmación sobre el sitio web B, pero el sitio A no puede hacer una declaración sobre la relación del sitio web B con el sitio C. Sin embargo, si el sitio web B confía en el A, puede verificar el sitio web A en busca de una declaración que otorgue permiso al sitio web C y decidir implementarlo.
Próximos pasos
- Consulta si hay documentación explícita para tu caso de uso.
- Obtén información para crear una instrucción.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-06-26 (UTC)
[null,null,["Última actualización: 2024-06-26 (UTC)"],[[["\u003cp\u003eDigital Asset Links enable apps and websites to make verifiable statements about their relationships with other apps and websites, such as link handling or credential sharing.\u003c/p\u003e\n"],["\u003cp\u003eThese statements are stored in a publicly accessible statement list, typically an "assetlinks.json" file hosted by the app or website making the statement.\u003c/p\u003e\n"],["\u003cp\u003eAndroid M and above automatically uses Digital Asset Links to verify website-to-app associations and direct links to the appropriate app if installed.\u003c/p\u003e\n"],["\u003cp\u003eThe protocol provides a foundation for trust and delegation between digital entities but relies on consumers to validate and act upon the statements.\u003c/p\u003e\n"]]],[],null,["# Getting Started\n\nOverview\n--------\n\nThe Digital Asset Links protocol and API enable an app or website to make public,\nverifiable *statements* about other apps or websites. For example, a website\ncan declare that it is associated with a specific Android app, or it can declare that\nit wants to share user credentials with another website.\n\nHere are some possible uses for Digital Asset Links:\n\n- Website A declares that links to its site should open in a designated app on mobile devices, if the app is installed.\n- Website A declares that it can share its Chrome user credentials with website B so that the user won't have to log in to website B if it is logged into website A.\n- App A declares that it can share device settings, such as location, with website B.\n\n### Key terms\n\n- **Principal:** The principal is the app or website making the statement. In Digital Asset Links, the principal is always the app or website that hosts the statement list.\n- **Statement list** : Statements are contained in a *statement list* that contains one or more statements. A statement list is cleartext and publicly accessible, in a location that is controlled by the principal and difficult to spoof or tamper with. It can be a free-standing file, or a section of another, larger item. For example, on a website, it is an entire file; in an Android app, it is a section in the app manifest. Statements can be viewed and verified by anyone, using non-proprietary methods. [See the statement list documentation for more information](/digital-asset-links/v1/create-statement).\n- **Statement:** A statement is a tightly structured JSON construct that consists of a *relation* (what the statement says to do, for example: Enable sharing credentials) and a *target* (the website or app that the relation applies to). Therefore, each statement is like a sentence, where *principal* says *relation* about *target* . \n- **Statement consumer:** A statement consumer requests a statement list from a principal, checks for the presence of a statement against a given principal, and if it exists, can perform the action specified. [See the statement comsuming documentation for more information](/digital-asset-links/v1/consuming)*.*\n\nQuick usage example\n-------------------\n\nHere's a very simplified example of how the website www.example.com could\nuse Digital Asset Links to specify that any links to URLs in that site should\nopen in a designated app rather than the browser:\n\n1. The website www.example.com publishes a statement list at https://www.example.com/.well-known/assetlinks.json. This is the official name and location for a statement list on a site; statement lists in any other location, or with any other name, are not valid for this site. In our example, the statement list consists of one statement, granting its Android app the permission to open links on its site: \n\n ```\n [{\n \"relation\": [\"delegate_permission/common.handle_all_urls\"],\n \"target\" : { \"namespace\": \"android_app\", \"package_name\": \"com.example.app\",\n \"sha256_cert_fingerprints\": [\"hash_of_app_certificate\"] }\n }]\n ```\n A statement list supports an array of statements within the \\[ \\] marks, but our example file contains only one statement. `sha256_cert_fingerprints` is the SHA256 fingerprints of your app's signing certificate. Find more details in the [Android App Links documentation](https://developer.android.com/training/app-links/verify-android-applinks#web-assoc).\n2. The Android app listed in the statement above has an intent filter that specifies the scheme, host, and path pattern of URLs that it wants to handle: in this case, https://www.example.com. The intent filter includes a special attribute `android:autoVerify`, new to Android M, which indicates that Android should verify the statement on the website described in the intent filter when the app is installed.\n3. A user installs the app. Android sees the intent filter with the `autoVerify` attribute and checks for the presence of the statement list at the specified site; if present, Android checks whether that file includes a statement granting link handling to the app, and verifies the app against the statement by certificate hash. If everything checks out, Android will then forward any https://www.example.com intents to the example.com app.\n4. The user clicks a link to https://www.example.com/puppies on their device. This link could be anywhere: in a browser, in a Google Search Appliance suggestion, or anywhere else. Android forwards the intent to the example.com app.\n5. The example.com app receives the intent and chooses to handle it, opening the puppies page in the app. If for some reason the app had declined to handle the link, or if the app were not on the device, then the link would have been sent to the next default intent handler matching that intent pattern (often the browser).\n\nImportant considerations and limitations:\n-----------------------------------------\n\n- The protocol does not authenticate the principal making the statement, but the statement is located in a specific location strongly associated with the principal, and under control of the principal.\n- The protocol does not authenticate the statement target, but it provides a means for the caller to authenticate the target (for example, a statement identifies mobile app targets by certificate hash and package name).\n- The protocol does not natively perform any statement actions; rather, it enables the ability to expose statements, which a consuming application must validate and then decide whether and how to act upon. Android M natively performs these steps for you; for example, if a website delegates link handling to a specific app, Android checks and verifies the statement, verifies the target app, and then offers the app the option to handle the given link.\n- The protocol does not enable making statements about two third parties: that is, website A can make a statement about website B, but website A cannot make a statement about website B's relationship to website C. However, if website B trusts website A, it can check website A for a statement granting permission to website C, and decide to implement that.\n\nNext steps\n----------\n\n1. [See if there is explicit documentation for your use case.](/digital-asset-links/v1/using)\n2. [Learn about creating a statement.](/digital-asset-links/v1/create-statement)"]]