Я пытаюсь создать некоторое расширение chrome в JS, и мне нужно использовать API Gmail для расширения в моем скрипте контента. Я пытаюсь с gmail.js библиотекой gitHub и с inboxSdk использовать его.с использованием Gmail Api в расширении chrome в сценариях контента
Итак, я создаю oauth2 в файле background.js, и я пытаюсь использовать gapi.client.gmail в моем файле content.js .. но это всегда неопределенный gapi.client, независимо от того, что я пытаюсь. Успех отправки запроса и получения ответа от API Gmail на странице background.js после загрузки Api, но не в скрипте содержимого.
Это мой файл манифеста:
{
"name": "Example Gmail Extension",
"content_scripts": [
{
"matches": [
"https://mail.google.com/*",
"http://mail.google.com/*" ],
"js": ["inboxsdk.js","content.js"],
"run_at": "document_end"
}
],
"background": {
"scripts": ["background.js" ,"client.js"]
},
"content_security_policy": "script-src https://*.google.com 'unsafe-eval'; object-src 'self'",
"oauth2": {
"client_id": <clientid>,
"scopes": ["https://www.googleapis.com/auth/gmail.modify"]
},
"permissions": [
"background",
"identity",
"storage",
"https://www.googleapis.com/*",
"https://*.googleusercontent.com/*",
"https://mail.google.com/",
"http://mail.google.com/" ],
"manifest_version": 2
}
когда client.js содержит API libary Gmail для JavaScript. Я использую этот Loading Google API Javascript Client Library into Chrome Extension, чтобы загрузить его вот так.
мой фоновый файл содержит только oauth и загрузку Gmail Api .. когда он загружается, он recgonize gapi.client, и я могу создать запрос и получить ответ.
chrome.identity.getAuthToken(
{'interactive': true},
function(token){
}
window.gapi_onload = function(){
gapi.auth.authorize(
{
client_id: '<clientid',
immediate: true,
scope: 'https://www.googleapis.com/auth/gmail.modify'
},
function(){
gapi.client.load('gmail', 'v1', function(){
*here I sucess to call to gmail API with gapi.client....*
});
}
);
Я что-то не так? Я также пытаюсь установить client.js в сценариях содержимого, но это не помогает - такая же ошибка.
Спасибо всем.
Что именно * отображается * в [различных соответствующих консолях для вашего расширения] (http://stackoverflow.com/a/38920982/3773011) при загрузке и выполнении расширения? – Makyen
gapi не определен .. – OriEng
Как указано [здесь] (http://stackoverflow.com/a/29487829/5832311), вы можете загружать вещи только в контексте контекста содержимого, вызывая 'executeScript' или объявляя их в манифесте ; и GAPI попытается загрузить больше библиотек с помощью метода «