2

*auth_token* を Chrome エクステンションに渡して、さらに GET リクエストで使用しようとしています。

ならいいと思う

  1. $.get('APP/get/user' {auth_token:''}, callback) [私の Chrome 拡張機能で] からユーザーを取得しようとしています
  2. 「not_auth」応答を受け取った場合は、新しいタブでコールバックを開いて auth_page [Chrome 拡張]
  3. ログインしてページにリダイレクトし、*auth_token* [私の WEB-APP-PAGE で] を生成します。
  4. *auth_token* を Chrome エクステンションに渡します ????? どのように?JS経由?[私のWEB-APP-PAGE内]

パラグラフ4を実現するには?ありがとうございました

4

3 に答える 3

1

アプシラーに良い

はい、やっとGETしました!contentscript.js (トークンページに読み込まれる) でトークンを取得し、バックグラウンドに送信します

contentscript.js

$(function(){
  //get token from page
  var token = $.getUrlVar('token');
  if (typeof token != 'undefined') {
    chrome.extension.sendMessage({token: token});
  }
});

background.js

/*button handler*/
function main_click() {
  alert(localStorage['auth_token']);
}
chrome.browserAction.onClicked.addListener(main_click);


/*listener*/
chrome.extension.onMessage.addListener(
  function(request, sender, sendResponse) {
    if (request.token)
      localStorage['auth_token'] = request.token;
  });
于 2012-12-04T20:55:54.623 に答える
0

コンテンツ スクリプト通信に関する Chrome ドキュメントでwindow.postMessageは、送信コード (ここでは Web ページ) で使用window.addEventListener("message", ...)し、リッスン コード (ここではページに挿入された Chrome 拡張機能のコンテンツ スクリプト) で使用することを推奨しています。技術的には、どのような種類のカスタム DOM イベントでもこれを行うことができますが、postMessage/messageには既に組み込みのサポートがあります。

ほぼそのままのコードからサンプル コードを持ち上げることができるはずです。

ネイティブ Web ページ:

// right after we get auth_token saved to a variable...
window.postMessage({ auth_token: auth_token }, "http://www.mypagedomain.com");

(http://www.mypagedomain.com実際のプロトコル/ドメインに変更されていることを確認してください。)

contentscript.js (Chrome 拡張機能でリッスン)

window.addEventListener("message", function(event) {
    // We only accept messages from ourselves
    if (event.source != window) {
      return;
    }

    console.log("auth_token received: " + event.data.auth_token);
}, false);

必要に応じて、イベント リスナー内から、メッセージ パッシングauth_tokenを使用して をバックグラウンド ページに渡すことができます。

編集:

マニフェストには次のようなものを含める必要があります (run_atページが読み込まれる前にスクリプトを挿入するために以下を使用することに注意してください)。

...
"content_scripts": [
  {
    "matches": ["http://www.mypagedomain.com/*"],
    "js": ["contentscript.js"],
    "run_at": "document_start"
  }
],
...
于 2012-12-03T21:17:36.620 に答える
0

localStorageページは、ページと拡張機能の間のブリッジとして機能できると思います。

auth_tokenが作成されたステージ 3 で、それをlocalStorageにダンプします。

<script type="text/javascript">
 ...
 var auth_token = "sfafsafasfsaf";
 localStorage["auth_token"] = auth_token;
 ...
</script>

そしてコンテンツスクリプト(content.js)でauth_tokenを取得し、

console.log(localStorage["auth_token"])
于 2012-12-03T20:57:02.357 に答える