权限警告准则
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
Chrome 扩展程序可提升用户的浏览器体验。为此,请使用需要特定权限的 Chrome API。有些权限侵扰性较低,并且不会显示警告。其他权限会触发用户必须授予的警告。本页面提供了有关如何处理权限警告的指南。权限中注明了具体警告适用的权限。
添加会触发警告的新权限后,扩展程序将被停用,直到用户接受新权限。如需了解如何测试此行为,请参阅更新权限。
某些权限在与其他权限配对时可能不会显示警告。例如,如果扩展程序也请求 "<all_urls>"
,则系统不会显示 "tabs"
警告。
最佳实践
权限警告描述了 API 授予的功能,但有些警告比其他警告更难理解。用户更有可能安装遵循以下准则的扩展程序:
- 请求相关权限
- 扩展程序必须实现单一用途,并遵守权限的使用政策。请确保仅请求支持扩展程序主要功能的权限。
- 使用可选权限
- 通过在运行时请求权限,改善新手入门体验。这样,您就可以围绕特定权限提供更多背景信息,并让用户选择要启用的功能。如需了解实现详情,请参阅 Permissions API。
- 使用“activeTab”权限
- 此权限不会显示权限警告。它会向用户所在的网站授予临时主机权限。如需了解详情,请参阅了解 ActiveTab 权限。
查看警告
如要查看扩展程序的权限警告,您有以下两种选择:
准备工作
- 安装 Node.js 和 NPM。
- 安装 Chromium。
- 克隆 extension-update-testing-tool 代码库。
- 在代码库的根目录中运行
npm install
。
使用此工具
- 运行
npm start
。
- 在 Chromium 中通过 http://localhost:8080 打开本地服务器。
- 将解压缩的扩展程序(文件夹或 .zip 文件)拖到页面中。
- 按照“手动添加”下方的说明下载并安装该扩展程序。
通过手动打包扩展程序
- 导航到
chrome://extensions
。
- 启用开发者模式
- 点击打包扩展程序。
- 在扩展程序根目录字段中指定扩展程序文件夹的路径。忽略首次软件包的 Private key 字段。
点击打包扩展程序按钮。
Chrome 将创建两个文件:.crx
文件和 .pem
文件。.pem
文件包含用于为扩展程序签名的私钥。请务必记住这些文件保存的目录。
请将 .pem
文件保存在安全可靠的位置;更新扩展程序时需要使用此文件。
将 .crx
文件拖放到该扩展程序的“管理”页面即可安装。
丢弃 .crx
文件后,浏览器会询问是否可以添加该扩展程序并显示警告。
更新权限
当扩展程序添加一项会触发警告的新权限时,可能会暂时停用该权限。只有在用户同意接受新权限后,该扩展程序才会重新启用。
若要检查扩展程序在添加新权限时是否会被停用,有以下选项可供选择:
以下步骤假定您按照使用扩展程序更新测试工具中的说明启动了服务器。
使用此工具
- 添加显示警告的新权限。
- 提高扩展程序版本号。
- 将解压缩的扩展程序(文件夹或 .zip 文件)拖到页面中。
- 转到
chrome://extensions
。
- 点击更新按钮。
手动更新扩展程序
- 在查看警告中找到您刚刚创建的
.crx
文件。
- 请重命名或删除图片。
- 请打开
manifest.json
,然后添加任何会触发警告的权限。
- 转到
chrome://extensions
。请勿移除以前安装的软件包。
- 再次打包扩展程序,但这次在第二个输入源中添加 pem 文件。
- 将新的打包扩展程序拖到“扩展程序管理”页面。
您将看到一个提示用户接受新权限的对话框。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-02-05。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2024-02-05\u3002"}
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2024-02-05。"],[],[]]