Cómo declarar permisos

Para usar la mayoría de las APIs de extensión y las funciones, debes declarar el intent de tu extensión en los campos de permisos del manifiesto. Las extensiones pueden solicitar las siguientes categorías de permisos, que se especifican con las respectivas claves de manifiesto:

"permissions"
Contiene elementos de una lista de cadenas conocidas. Los cambios pueden activar una advertencia.
"optional_permissions"
Lo otorga el usuario durante el tiempo de ejecución, en lugar de hacerlo durante la instalación.
"content_scripts.matches"
Contiene uno o más patrones de coincidencia que permiten que las secuencias de comandos de contenido se inyecten en uno o más hosts. Los cambios pueden activar una advertencia.
"host_permissions"
Contiene uno o más patrones de coincidencia que otorgan acceso a uno o más hosts. Los cambios pueden activar una advertencia.
"optional_host_permissions"
Lo otorga el usuario durante el tiempo de ejecución, en lugar de hacerlo durante la instalación.

Los permisos ayudan a limitar el daño si la extensión se ve comprometida por software malicioso. Se muestran algunas advertencias de permisos a los usuarios para que den su consentimiento antes de la instalación o durante el tiempo de ejecución, como se detalla en Permiso con advertencias.

Considera usar permisos opcionales donde lo permita la funcionalidad de la extensión para brindarles a los usuarios un control informado sobre el acceso a los recursos y los datos.

Si una API requiere un permiso, en su documentación se explica cómo declararlo. Para ver un ejemplo, consulta API de Storage.

Manifest

El siguiente es un ejemplo de la sección de permisos de un archivo manifest:

manifest.json:

{
  "name": "Permissions Extension",
  ...
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  "optional_permissions": [
    "topSites",
  ],
  "host_permissions": [
    "https://www.developer.chrome.com/*"
  ],
  "optional_host_permissions":[
    "https://*/*",
    "http://*/*"
  ],
  ...
  "manifest_version": 3
}

Permisos de host

Los permisos de host permiten que las extensiones interactúen con los patrones de coincidencia de la URL. Algunas API de Chrome requieren permisos de host además de sus propios permisos de API, los cuales se documentan en cada página de referencia. Estos son algunos ejemplos:

Permisos con advertencias

Cuando una extensión solicita varios permisos, y muchos de ellos muestran advertencias durante la instalación, el usuario verá una lista de advertencias, como en el siguiente ejemplo:

Advertencias sobre los permisos de extensiones durante la instalación

Es más probable que los usuarios confíen en una extensión con advertencias limitadas o cuando se les expliquen los permisos. Considera implementar permisos opcionales o una API menos potente para evitar advertencias alarmantes. Si deseas conocer las prácticas recomendadas para las advertencias, consulta los Lineamientos sobre advertencias de permisos. Las advertencias específicas se enumeran con los permisos a los que se aplican en la lista de referencia de Permisos.

Si agregas o cambias patrones de coincidencia en los campos "host_permissions" y "content_scripts.matches" del archivo de manifiesto, también se activará una advertencia. Para obtener más información, consulta Actualiza permisos.

Permitir acceso

Si tu extensión necesita ejecutarse en URLs de file:// o en modo Incógnito, los usuarios deben otorgar acceso a la extensión en su página de detalles. Encontrarás las instrucciones para abrir la página de detalles en Administrar tus extensiones.

Permitir el acceso a las URLs del archivo y a las páginas de incógnito

  1. Haz clic con el botón derecho en el ícono de la extensión en Chrome.
  2. Elige Administrar extensión.

    Menú contextual de la extensión
    Menú de la extensión
  3. Desplázate hacia abajo para habilitar el acceso a las URLs del archivo o al modo Incógnito.

    Permitir las URLs de archivo y el modo Incógnito en la página de detalles de la extensión
    Se habilitó el acceso a las URLs de archivos y al modo Incógnito.

Para detectar si el usuario permitió el acceso, puedes llamar a extension.isAllowedIncognitoAccess() o extension.isAllowedFileSchemeAccess().