2013-11-30 3 views
1

Наше расширение Chrome работает безупречно в течение нескольких месяцев, но недавно вышло из-за сбоев oauth. Мы используем нашу собственную конечную точку oauth (через привратника). Поведение безумно - когда вы нажимаете кнопку расширения, все окно минимизируется, и когда вы возвращаете его на передний план и принимаете приглашение oauth, всплывающее окно расширения замирает на экране и остается там даже при переключении вкладок. Это не auth, и последующие вызовы к конечной точке имеют «access_token = undefined» в querystring. Закрытие всего набора вкладок - единственный способ избавиться от замороженного окна.OAuth в расширении Chrome, нарушенном в последних версиях Chrome.

Расширение ouath от https://github.com/borismus/oauth2-extensions. Я читал о подобных проблемах в последней версии Chrome, вызванной различными требованиями к манифесту - наш ниже. Расширение работает нормально, если я полностью удаляю auth.

Были избиения моей головы против этого в течение многих дней, любая помощь была высоко оценена.

{ 
    "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'" 
} 

Update: 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); 
})(); 
+0

Иногда я сталкиваюсь с той же проблемой при открытии всплывающего окна расширения Google Voice. Вы должны искать похожие проблемы, и если их не найти, откройте новый: https://code.google.com/p/chromium/issues/list – abraham

+0

. Трудно (если не невозможно) определить проблему, если мы надеемся Не видите код, который его создает. Доступно ли ваше расширение в Интернет-магазине Chrome? – gkalpak

+0

ExpertSystem, извинения - да, это здесь: https://chrome.google.com/webstore/detail/the-entelo-button/nogdppkjhdnlpkbbdbgpmekmbfpkkogb Обратите внимание, что манифест выше от моей локальной версии, и был отредактирован в то время как я пытался это исправить - в частности, я добавил раздел «web_accessible_resources». –

ответ

0

По рекомендации в комментариях, решение, которое я в итоге нашел.

Оказалось, что процесс замораживания был вызван кодом отслеживания Google Analytics. Popup.html загружал файл с именем tracker.js, в котором содержался код, который я только что добавил в качестве обновления исходного вопроса. При удалении исправлена ​​проблема «замораживания», и добавление блока web_accessible_resources в манифест фиксировало проблему перенаправления oauth.

Не уверен, что Chrome изменился, чтобы вызвать это, но я угадываю что-то вокруг более строгих правил для инъекций контента.

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