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編輯,它不是一個好主意,顯示模式對話框,因爲它會阻止用戶與網站互動時,他們不關心關於擴展權然後。因此,我恢復了你的編輯部分,並放回「無模式」。 –

相關問題