1

私は自分が開発したChrome拡張機能を持っており、ユーザーごとに何らかのIDを付けたいと思っています。

理想的には、このIDをマニフェストに配置し、chrome.app.getDetails().userid

次に、このIDを使用してX時間ごとにフィードを取得できます。フィードは、それぞれ異なりますuserid

自分でCRXファイルを提供する場合は、ダウンロード要求時にマニフェストを変更し、特定のロジックを使用してIDを挿入すると同時に、同じIDをmysqlテーブルに挿入する簡単なPHPスクリプトを作成するだけでこれを行うことができます。

Chromeウェブストアを通じて拡張機能を提供しているときにこれを行うにはどうすればよいですか?

4

1 に答える 1

2

マニフェストファイルにユーザー固有の値を含めないでください。より良いアプローチは、拡張機能の永続性を使用することです。

このようなIDを定義する論理的な場所の1つは、オプションページです。
もう1つの可能なオプションは、次のロジックに従うバックグラウンドスクリプトです。

    var userid = localStorage.getItem('userid');
    if (!userid) {
        // Create new useruid, either via a server-side script, or client-side
        // ...
        localStorage.setItem('userid', 'new user id');
    }

この例では、localStorage永続性を有効にするために使用しました。代わりにChrome20以降を使用することもできます。これにより、ユーザーはプロファイルと設定を同期できます。chrome.storage

最初の実行時にIDをチェックして取得する代わりに、サーバー側でロジックを実装することもできます。たとえば、サーバーの応答形式がJSONであると仮定します。次に、応答でuidを定義するだけです(オプションで、変更された場合のみ)。

var userid = localStorage.getItem('userid');
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/feeds/json?userid=' + userid);
xhr.onload = function() {
    var response = JSON.parse(xhr.responseText);
    if (response.userid) { // Set new uid if needed
        localStorage.setItem('userid', userid = response.userid);
    }
    // ... your application's logic ...
};
xhr.send();

サーバーは以下を実装する必要があります。

  1. リクエスト(クエリ文字列?)にuseridキーが含まれている場合は、ユーザーIDが有効で既知であるかどうかを確認してください。
    • が無効な場合useridは、生成して応答に含めます。
  2. ここでのアプリケーションのロジック

これにより、応答は次のようになります(PHPを使用してJSONを生成するには、を使用しますjson_encode):

{"userid":"some unique user identifier", ....}
于 2012-07-17T12:34:16.560 に答える