【发布时间】:2013-11-30 19:42:23
【问题描述】:
我们的 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);
})();
【问题讨论】:
-
我在打开 Google Voice 扩展弹出窗口时有时会遇到同样的问题。您应该搜索类似的问题,如果没有找到,请打开一个新问题:code.google.com/p/chromium/issues/list
-
如果我们看不到创建问题的代码,就很难(如果不是不可能的话)确定问题。您的扩展程序在 Chrome 网上应用店有售吗?
-
ExpertSystem,抱歉——是的,它在这里:chrome.google.com/webstore/detail/the-entelo-button/… 请注意,上面的清单来自我的本地版本,并且在我试图解决这个问题时已经过编辑——特别是我添加了“web_accessible_resources”部分。
-
@JohnMcGrath:我无法重现您上面描述的“冻结”问题(可能是特定于操作系统的——您使用的是什么操作系统?)。是否有任何测试凭据(或注册某些方法)可用于测试有问题的行为?
-
昨晚解决了。原来冻结业务是由谷歌分析跟踪代码引起的。 Popup.html 一直在加载一个名为 tracker.js 的文件,其中包含我刚刚添加的代码作为对原始问题的更新。删除它修复了“冻结”问题,并将 web_accessible_resources 块添加到清单中修复了 oauth 重定向问题。不确定 Chrome 发生了什么变化导致了这种情况,但我猜想关于更严格的内容注入规则。 @ExpertSystem,非常感谢您查看此内容,非常感谢。
标签: google-chrome oauth google-chrome-extension doorkeeper