我有一个我开发的chrome扩展程序,我想为每个用户提供某种ID。
理想情况下,我会将此ID放入清单中,然后通过chrome.app.getDetails().userid
然后我可以使用此ID每X小时获取一次Feed,每个userid
的Feed都不同。
如果我自己提供CRX文件,我可以通过编写一个快速的PHP脚本来执行此操作,该脚本在下载请求时更改清单并使用特定逻辑插入id,同时还将相同的id插入到mysql表中。
如何在通过Chrome网上应用店提供扩展程序时执行此操作?
答案 0 :(得分:2)
不要在清单文件中包含特定于用户的值。更好的方法是使用扩展的持久性。
定义此类ID的一个合理位置是options page 另一种可能的选择是后台脚本,它遵循以下逻辑:
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.storage
Chrome 20 + ,这样用户就可以同步他们的个人资料和设置。
您可以在服务器端实现逻辑,而不是在第一次运行时检查和检索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
密钥,请检查用户标识是否有效且已知。
userid
无效,请生成一个,并将其包含在回复中。这导致响应看起来像(要使用PHP生成JSON,请使用json_encode
):
{"userid":"some unique user identifier", ....}