不要在清单文件中包含用户特定的值。更好的方法是使用扩展的持久性。
定义这种 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();
服务器必须实现以下内容:
- 如果请求(查询字符串?)包含
userid
键,请检查用户 ID 是否有效且已知。
- 如果
userid
无效,则生成一个,并将其包含在响应中。
- 您的应用程序的逻辑在这里
这导致响应看起来像(要使用 PHP 生成 JSON,请使用json_encode
):
{"userid":"some unique user identifier", ....}