【问题标题】:How to know which permissions my chrome extension needs?如何知道我的 chrome 扩展需要哪些权限?
【发布时间】:2020-09-24 17:43:43
【问题描述】:

我刚刚编写了一个 chrome 扩展,它向 devtools 添加了一个选项卡,可以从任何页面上的示例元素生成 CSS 选择器。我已经设置了“”权限,因为我将在用户想要选择示例元素的任何页面中使用内容脚本注入 JS。我刚刚向 Google 支付了 5 美元,并且由于我正在将扩展程序发布到 chrome 扩展程序商店,Google 警告我可能需要几周的时间才能批准我的扩展程序,因为权限太广泛了。

According to Google,如果我声明activeTab权限,我可能不需要声明任何主机权限。不确定这是否适用于我的情况,但最重要的是,我不知道我是否真的需要额外的权限,因为no warnings will be shown when my extension is unpacked(我理解这意味着不会显示警告并且扩展将允许运行任何代码,而不管是否缺少任何权限),这就是我测试它的方式。

然后,Google 建议打包已安装的扩展程序以查看警告,但我不会看到任何警告,因为 the extension won't run。所以我似乎没有办法知道我是否真的需要“”权限,或者我是否需要任何其他权限,除了通过发布它来测试我的运气并等待几周看看会发生什么,然后重复这个处理,直到我想出所需的最低权限,所以我想知道是否有人知道更好的选择。

【问题讨论】:

    标签: google-chrome-extension


    【解决方案1】:

    在安装扩展程序之前,浏览器会显示权限警告。它们列出了 API 和主机权限。这些警告不会影响扩展程序的功能。

    要查看这些警告,您可以在 devtools console opened on any of your extension pages 中运行以下命令(即不在内容脚本中):

    fetch('/manifest.json').then(_ => _.text()).then(_ => chrome.management.getPermissionWarningsByManifest(_, console.log))

    要查看任何已安装扩展程序的权限,无论是解压后还是从商店中,打开chrome://extensions 页面并点击该扩展程序卡上的details 按钮。

    圈出的部分是API权限。下面的站点访问列出了主机权限,当在网络商店中安装扩展程序时,这些权限以简化的形式显示,例如<all_urls> 将是“读取并更改您访问的网站上的所有数据”。

    每个权限警告的确切文本也列在documentation 中。

    您的扩展程序使用<all_urls>,这意味着广泛的访问权限和缓慢的手动审核队列。按照建议,您可以尝试使用activeTab 权限而不是<all_urls>。如果它不起作用,请在https://crbug.com 上打开一个新报告,因为旧报告是abandoned。此外,请尝试使用chrome.devtools.inspectedWindow API,该 API 提供类似于 chrome.tabs.executeScript 的 eval 方法,并且可能适用于 activeTab。注意,它与 JavaScript eval 无关。

    【讨论】:

    • 也许我的帖子令人困惑,但我不需要知道我的扩展程序声明了哪些权限,因为我已经知道了。我想知道的是我是否真的需要声明这些权限,或者我可能需要声明哪些其他权限。我希望警告能告诉我这一点,但即使我根本没有声明任何权限,在解压缩扩展程序时我也不会看到任何警告。
    • 另外,既然你提到尝试activeTab,如果解压后的扩展不会显示任何警告,我该如何尝试呢?唯一的方法是发布到 chrome 商店,几周后,如果获得批准,安装它并查看我的扩展程序是否显示警告? (顺便说一句,我确实使用inspectedWindow.eval 而不是executeScript
    • 1.安装扩展程序时会显示警告,它们将列出 API 和主机,因此您可以从详细信息页面 + 列出警告文本的文档中推断出它们,如我的答案 2 中所述。我认为尝试 activeTab 没有问题这些警告与扩展的功能无关。 3.你也可以使用chrome.management.getPermissionWarningsByManifest,看它的描述。
    • 对不起,我想我们还在谈论对方。我不在乎哪些描述对应于哪些权限。我只想知道我需要在清单中包含哪些权限。我想我可以“尝试”不同的权限,直到它们“工作”,除非这意味着每次尝试都会发布到 chrome 商店。还是您通过“尝试”权限表示其他意思?也许我只是在这里遗漏了一些明显的东西。
    • 是的,我不明白你想要什么了。如果您想使用 chrome.* API,那么您可以为该 API 添加权限,然后您就可以使用它。无论您是否需要它,都取决于该 API 是否满足您的需求。就这么简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2014-08-28
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多