Я испробовал кучу предлагаемых решений от stackoverflow, но ни одно из них не работает, я подозреваю, что это может быть связано с файлами cookie или новыми версиями, поэтому я должен наконец спросить:
Япытаюсь использовать Google (в частности, Sheets) API в моем веб-расширении firefox, и я скачал это: https://apis.google.com/js/api.js и добавил его в мой manifest.json в "background" - "scripts" перед моим собственным сценарием, как выможно увидеть в исходном коде ниже.Вот учебник: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append
Весь мой проект слишком большой, поэтому я воссоздал проблему в меньшем масштабе:
test.js:
function onCreated() {
if (browser.runtime.lastError) { console.log(`Error: ${browser.runtime.lastError}`); }
else { console.log("Item created successfully"); }
gapi.client.setApiKey('testkey'); //This is the line that doesn't work
}
browser.contextMenus.create({
id: "testlbl",
title: "TEST LABEL - CLICK ME",
contexts: ["all"]
}, onCreated);
browser.contextMenus.onClicked.addListener((info, tab) => {
if(info.menuItemId == "testlbl") {
console.log("ACTION TRIGGERED");
console.log("JQUERY RESULT: "+$(location).attr('href'));
}
});
manifest.json:
{
"manifest_version": 2,
"name": "Testing",
"description": "Random stuff",
"version": "1.0",
"default_locale": "en",
"background": {
"scripts": ["api.js", "jquery-3.3.1.min.js", "test.js"]
},
"permissions": [
"contextMenus",
"activeTab"
]
}
messages.json:
{
"extensionName": {
"message": "TestLabel",
"description": "Name of the extension."
}
}
структура папки (на случай, если вам нужно ее проверить):
mainFolder
--- test.js
--- api.js
--- jquery-3.3.1.min.js
--- manifest.json
--- _locales
------ en
--------- messages.json
Я попытался добавитьJQuery так же, как вы можете видеть, просто чтобы убедиться, что я добавлял сценарии правильно, и он работает нормально.Я скачал его отсюда: https://code.jquery.com/jquery-3.3.1.min.js
Загрузка была предложена в качестве решения здесь: https://developer.chrome.com/extensions/contentSecurityPolicy#resourceLoading
Проблема в том, что я получаю " gapi.client не определен"в консоли браузера и ничего не происходит в результате.Я только поставил строку gapi.client.setApiKey('testkey');
, чтобы протестировать Google API и сузить проблему.