Chrome扩展程序中的OAuth在最近的Chrome版本中已损坏

时间:2013-11-30 19:42:24

标签: google-chrome oauth google-chrome-extension doorkeeper

我们的Chrome扩展程序已经完美运行了好几个月,但由于oauth失败而最近破产。我们正在使用我们自己的oauth端点(通过门卫)。这种行为很疯狂 - 当您单击扩展按钮时,整个窗口将被最小化,当您将其恢复到前台并接受oauth提示时,扩展弹出窗口会冻结在屏幕上,并且即使切换选项卡也会停留在那里。它没有auth,后续对端点的调用在查询字符串中有'access_token = undefined'。关闭整个选项卡是摆脱冻结窗口的唯一方法。

扩展名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'"
}

更新: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);
})();

1 个答案:

答案 0 :(得分:0)

根据评论中的建议,我最终找到了解决方案。

原因是Google Analytics跟踪代码导致冻结业务。 Popup.html一直在加载一个名为tracker.js的文件,其中包含我刚刚添加的代码作为原始问题的更新。删除它修复了'冻结'问题,并将web_accessible_resources块添加到清单修复了oauth重定向问题。

不确定Chrome改变了什么导致这种情况,但我猜测内容注入的更严格规则。