3

我最近做了一个使用纽约时报API的Chrome扩展程序(FrontPage)。Chrome网上应用店严格警告使用公共API

我发送一个AJAX请求到API,它用JSON响应。但是,为了能够做到这一点,我需要设置permissionsmanifest.json文件是https://api.nytimes.com/*正是如此:

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

以不具有扩展和好如初,并给予Cross Origin rejection。但是,无论用户何时从网上商店安装我的扩展程序,他们都会看到以下警告:“[扩展名]可以访问api.nytimes.com上的所有数据”。

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

是否有解决方法,即有没有办法在Chrome扩展中使用API​​而不向用户显示此警告?我是否以非规范的方式接近这一点?

+0

我想,除非谷歌提供更细化的权限,那么您的扩展技术*可以*访问网站上的所有用户数据。这意味着警告是正确放置的。 –

回答

2

有没有办法做你在问什么。 Chrome只是告知用户你的应用可以做什么。他们无法相信你。我建议你的做法和我见过的其他人做的事情是在你的应用程序描述页面上通知潜在的下载者警告。

喜欢的东西

`警告:你可能会得到一个可怕的警告信息,等等等等,因为我 扩展等等等等,我不同意你的数据做任何事情,我鼓励 你看看源如果你很好奇。”

大多数人都习惯于看到和现在反正接受这些警告。您实际上使有很大的意义,因为用户可以直观地看到,页面是如何与你的扩展。

读取和修改您访问

是需要一些技巧来处理在所有网站上的所有数据。


更直接地处理你原来的问题:你把它的东西“权限”阵列决定警告(如果有的话)获取生成豆。

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

+0

“你放入那个”权限“数组的任何东西都会产生警告”根本不是这种情况。 –

+0

@DanielHerr对不起,编辑 – LukeP

2

如果API是公开的,那么很可能它已经启用了许可的CORS头文件。

一些轶事证据from the developers forum表明NYTimes API的情况是至少对于某些端点(不能在没有API密钥的情况下测试它)。如果没有为您使用的端点启用,请拨打you can request that

在这种情况下,您不需要对该API的跨源请求的权限,XHR应该成功。

+0

NYTimes API确实有宽容的CORS标头,但由于它是Chrome扩展,我认为这是需要我设置权限,根据我读[Cross Origin Chrome扩展资源](https ://developer.chrome.com/extensions/xhr)。 – ShivanKaul

+0

不,如果CORS设置为*,则不需要权限。您可以使用权限覆盖限制性(或缺失)CORS头。 – Xan

1

答案由克桑和卢克当然是正确的,但还没有提到一个重要的选择,这将有助于你:

你可以把它的optional permission,后来要求它在与解释为什么开头的运行时间它是需要的(更好,但先要求它,如果用户拒绝然后解释他们必须接受)。

只记得在用户操作后必须要求可选的权限,所以用按钮显示一个无模式的对话框,并在点击按钮时请求权限。我的扩展中有类似的问题。

在我的情况下,我只需要创建和阅读特定的谷歌电子表格,但这意味着要求他们的整个谷歌驱动器读/写。

+0

耶,我通常会做一点点,一旦我到我的笔记本电脑 –

+0

编辑#3编辑,它不是一个好主意,显示模式对话框,因为它会阻止用户与网站互动时,他们不关心关于扩展权然后。因此,我恢复了你的编辑部分,并放回“无模式”。 –

相关问题