Наше расширение для Chrome работало безупречно в течение нескольких месяцев, но недавно сломалось из-за сбоев oauth. Мы используем нашу собственную конечную точку oauth (через привратника). Поведение сумасшедшее: когда вы нажимаете кнопку расширения, все окно сворачивается, а когда вы возвращаете его на передний план и принимаете приглашение oauth, всплывающее окно расширения зависает на экране и остается там, даже когда вы переключаете вкладки. Он не аутентифицируется, и последующие вызовы конечной точки имеют «access_token=undefined» в строке запроса. Закрытие всего набора вкладок — единственный способ избавиться от зависшего окна.
Расширение ouath взято из https://github.com/borismus/oauth2-extensions. Я читал о подобных проблемах в последней версии Chrome, вызванных другими требованиями к манифесту — наш ниже. Расширение работает нормально, если я полностью удалю авторизацию.
Я бился головой об это в течение нескольких дней, любая помощь очень ценится.
{
"name": "An extenstion",
"version": "0.5.4",
"manifest_version": 2,
"description": "Desc here...",
"icons": {
"16": "img/icon16.png",
"48": "img/icon48.png",
"128": "img/icon128.png"
},
"homepage_url": "http://foo.com/button",
"browser_action": {
"default_title": "Foo Button",
"default_icon": "img/icon_no_auth.png",
"default_popup": "popup.html"
},
"background": {
"page": "background.html"
},
"content_scripts": [
{
"matches": [ "http://foo.com/robots.txt*" ],
"js": [ "oauth2/oauth2_inject.js" ],
"run_at": "document_start"
}
],
"permissions": [
"tabs",
"https://foo.com/*"
],
"web_accessible_resources": [
"oauth2/oauth2.html"
],
"content_security_policy": "script-src 'self' 'unsafe-eval' https://ssl.google-analytics.com; object-src 'self'"
}
Обновление: popup.html включал файл с именем tracker.js, который содержал приведенный ниже код. Его удаление устранило проблему зависания, согласно моему комментарию ниже.
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxxx-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = 'https://ssl.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();