2015-02-22 3 views
0

У меня возникли проблемы с обволакиванием структуры расширений Chrome.Расширение Chrome с использованием фоновой страницы + скриптов контента

Мое расширение состоит из двух различных частей:

  1. Он использует справочную страницу войти через OAuth, затем сопоставляет много данных из OAuth и сохраняет его в chrome.storage.local.

  2. При просмотре веб-страниц, это делает вызов chrome.storage.local, чтобы проверить, соответствует ли текущий домен информацию, хранящуюся от OAuth, и если да, то отображает уведомление с помощью [Rich Notifications API][1]

Структура моего manifest.json является разрушая вещи.

{ 
    "name": "API Test", 
    "version": "3.1.2", 
    "manifest_version": 2, 
    "minimum_chrome_version": "29", 
    "app": { 
    "background": { 
     "scripts": ["main.js"] 
    } 
    }, 
    "permissions": ["identity", "storage", "*://*/*"], 
    "oauth2": { 
    "client_id": "<<client_id>>", 
    "scopes": [ 
     "https://www.googleapis.com/auth/plus.login", 
     "https://www.google.com/m8/feeds", 
     "https://www.googleapis.com/auth/contacts.readonly" 
    ] 
    }, 
    "content_scripts": [ 
    { 
     "matches": ["*://*/*"], 
     "js": ["domchecker.js"] 
    } 
    ] 
} 

Когда я делаю это, я получаю следующее сообщение об ошибке от Chrome:

There were warnings when trying to install this extension: 
'content_scripts' is only allowed for extensions and 
legacy packaged apps, but this is a packaged app. 

Можно ли сделать эти два процесса в тандеме? Если нет, как я могу использовать справочную страницу для проверки обновления страницы и запуска скрипта?

ответ

4

Ваш манифест - это приложение манифест, как это часто бывает полезно при ошибке.

Чтобы исправить, удалите app «обертывание», это должно быть только background.scripts ключ. Тогда это будет действительный расширительный манифест.


отметить: chrome.notifications не доступен для сценариев контента; вам нужно будет использовать Messaging, чтобы запросить вашу справочную страницу, чтобы показать ее.

+0

Действительно, я попытался удалить «app'» wrapping », но тогда я не смог выполнить мой вход в систему (который загружает все данные в' chrome.storage.local'). Что вы предлагаете для этого? Возможно, создав кнопку приложения значка, чтобы войти в систему? – Jascination

+1

Конечно, это была бы хорошая идея. API '' browserAction' '(https://developer.chrome.com/extensions/browserAction) поможет вам. В качестве альтернативы, если это одноразовая настройка, вы можете просто отобразить страницу параметров при первом запуске. – Xan

+0

@Xan Можете ли вы мне помочь на этом http://stackoverflow.com/questions/40045344/getting-an-oauth-access-token-to-work-for-chrome-extension – uncivilized

Смежные вопросы