1

我有一个我开发的 chrome 扩展,我想为每个用户提供某种 ID。

理想情况下,我会将此 ID 放在清单中,并通过chrome.app.getDetails().userid

然后我可以使用此 id 每 X 小时获取一次提要,并且每个提要都不同userid

如果我自己提供 CRX 文件,我可以通过简单地编写一个快速的 PHP 脚本来执行此操作,该脚本会根据下载请求更改清单并使用特定逻辑插入 id,同时还将相同的 id 插入到 mysql 表中。

在通过 Chrome 网上应用店提供扩展程序时如何做到这一点?

4

1 回答 1

2

不要在清单文件中包含用户特定的值。更好的方法是使用扩展的持久性。

定义这种 id 的一个合乎逻辑的地方是选项页面
另一个可能的选项是后台脚本,它遵循以下逻辑:

    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启用持久性。您也可以改用Chrome 20+,它允许用户同步他们的配置文件和设置。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 回答