2016-12-07 7 views
0

Я пытаюсь создать некоторое расширение 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 в сценариях содержимого, но это не помогает - такая же ошибка.

Спасибо всем.

+0

Что именно * отображается * в [различных соответствующих консолях для вашего расширения] (http://stackoverflow.com/a/38920982/3773011) при загрузке и выполнении расширения? – Makyen

+0

gapi не определен .. – OriEng

+0

Как указано [здесь] (http://stackoverflow.com/a/29487829/5832311), вы можете загружать вещи только в контексте контекста содержимого, вызывая 'executeScript' или объявляя их в манифесте ; и GAPI попытается загрузить больше библиотек с помощью метода «