Расширение OAuth в Chrome не работает в последних сборках Chrome

Наше расширение для 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);
})();

person John McGrath    schedule 30.11.2013    source источник
comment
Иногда я сталкиваюсь с той же проблемой при открытии всплывающего окна расширения Google Voice. Вы должны искать похожие проблемы и, если они не будут найдены, открыть новую: code.google. .com/p/chromium/issues/list   -  person abraham    schedule 01.12.2013
comment
Трудно (если не невозможно) определить проблему, если мы не видим код, который ее создает. Доступно ли ваше расширение в Интернет-магазине Chrome?   -  person gkalpak    schedule 01.12.2013
comment
ExpertSystem, приносим извинения — да, это здесь: chrome.google.com/ webstore/detail/the-entelo-button/ Обратите внимание, что приведенный выше манифест взят из моей локальной версии и был отредактирован, пока я пытался это исправить — в частности, я добавил раздел «web_accessible_resources».   -  person John McGrath    schedule 02.12.2013
comment
@JohnMcGrath: я не смог воспроизвести описанную выше проблему зависания (может быть, это зависит от ОС - на какой ОС вы работаете?). Существуют ли какие-либо тестовые учетные данные (или способ зарегистрироваться для некоторых), которые можно использовать для проверки проблемного поведения?   -  person gkalpak    schedule 02.12.2013
comment
Вчера вечером решил. Выяснилось, что зависание бизнеса было вызвано кодом отслеживания Google Analytics. Popup.html загружал файл с именем tracker.js, который содержал код, который я только что добавил в качестве обновления исходного вопроса. Его удаление устранило проблему «зависания», а добавление блока web_accessible_resources в манифест устранило проблему перенаправления oauth. Не уверен, что Chrome изменил, чтобы вызвать это, но я предполагаю, что что-то связано с более строгими правилами для внедрения контента. @ExpertSystem, большое спасибо, что посмотрели это, очень признателен.   -  person John McGrath    schedule 02.12.2013
comment
НП. Кстати, не стесняйтесь (на самом деле рекомендуется) опубликовать свое решение в качестве ответа (и принять его тоже), чтобы помочь будущим посетителям страницы :)   -  person gkalpak    schedule 02.12.2013
comment
Спасибо, решение опубликовано.   -  person John McGrath    schedule 03.12.2013


Ответы (1)


Согласно предложениям в комментариях, решение, которое я в конце концов нашел.

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

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

person John McGrath    schedule 02.12.2013