Chrome 网上应用店对使用 public API 的警告过于严格

Overly strict warning from Chrome Web Store for using a public API

我最近制作了一个 Chrome 扩展 (FrontPage),它使用纽约时报 API。

我向 API 发送 AJAX 请求,它以 JSON 响应。但是,为了能够这样做,我需要将 manifest.json 文件中的 permissions 设置为 https://api.nytimes.com/* 因此:

  ...
  "permissions": [ "https://api.nytimes.com/*" ],
  ...

为了不让插件崩溃烧毁,给个Cross Origin rejection

但是,每当用户从网上应用店安装我的扩展程序时,他们都会收到一条看起来很可怕的警告,内容如下:“[扩展程序] 可以访问 api.nytimes.com 上的所有数据”。

我所做的就是发送请求并接收+解析来自 public API 的响应。警告似乎过分了。我不会以任何方式存储任何用户数据。

有没有办法解决这个问题,即有没有办法在 Chrome 扩展中使用 API 而不向用户显示此警告?我是否以非规范的方式处理这个问题?

无法按照您的要求进行操作。 chrome 只是告诉用户您的应用可以做什么。他们没有办法信任你。我建议您做的以及我看到其他人所做的是告知潜在的下载者您的应用程序描述页面上的警告。

类似于

`Warning: you may get a scary warning message blah blah because my extension blah blah, I don't do anything with your data, I encourage you to look at the source if you are curious."

大多数人现在已经习惯看到并接受这些警告了。你的实际上很有意义,因为用户可以直观地看到该页面如何与你的扩展相关。

Read and modify all your data on all websites you visit

处理起来有点棘手。


为了更直接地处理您的原始问题:它是您放入 "permissions" 数组的内容,它决定生成哪些警告(如果有)。

Here is a list 所有可能的警告消息及其适用的权限。该页面还包含不会生成任何警告消息的权限列表。

如果 API 是 public,那么它很可能启用了宽松的 CORS headers。

一些轶事证据from the developers forum suggests it is the case for NYTimes API, for at least some endpoints (can't test it without an API key). If it's not enabled for the endpoint you are using, you can request that

在这种情况下,您不需要获得 cross-origin 向 API 请求的权限,无论如何 XHR 应该会成功。

Xan 和 Luke 的回答当然是正确的,但没有提到可以帮助您的重要替代方法:

您可以将其设置为 optional permission 并稍后在 运行 时间请求它,并在开头解释为什么需要它(最好先请求它,如果用户拒绝,则解释他们必须接受)。

请记住,在用户操作后必须询问可选权限,因此显示一个带有按钮的无模式对话框,并在单击该按钮时询问权限。我在我的扩展程序中遇到了类似的问题。

在我的例子中,我只需要创建和阅读一个特定的 google 电子表格,但这意味着要为 read/write 请求他们的整个 google 驱动器。