1

私たちの 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);
})();
4

1 に答える 1

0

コメントの提案に従って、私が最終的に見つけた解決策。

ビジネスの凍結は、Google アナリティクスのトラッキング コードが原因であることが判明しました。Popup.html は tracker.js というファイルをロードしていました。このファイルには、元の質問への更新として追加したばかりのコードが含まれていました。それを削除すると「フリーズ」の問題が修正され、web_accessible_resources ブロックをマニフェストに追加すると、oauth リダイレクトの問題が修正されました。

Chrome がこれを引き起こした原因はわかりませんが、コンテンツ インジェクションのより厳格なルールに関する何かを推測しています。

于 2013-12-02T20:59:54.293 に答える