Google chrome chrome扩展的动态清单值
我开发了一个chrome扩展,我想为每个用户提供某种ID 理想情况下,我会将这个ID放在清单中,并通过Google chrome chrome扩展的动态清单值,google-chrome,google-chrome-extension,chrome-web-store,Google Chrome,Google Chrome Extension,Chrome Web Store,我开发了一个chrome扩展,我想为每个用户提供某种ID 理想情况下,我会将这个ID放在清单中,并通过chrome.app.getDetails().userid 然后我可以使用这个id每X小时获取一个提要,并且每个用户id的提要都不同 如果我自己提供CRX文件,我可以通过编写一个快速PHP脚本来完成这项工作,该脚本在下载请求时更改清单,并使用特定逻辑插入id,同时将相同的id插入mysql表 在通过Chrome Web Store为扩展提供服务时,如何做到这一点?不要在清单文件中包含特定于用户
chrome.app.getDetails().userid
然后我可以使用这个id每X小时获取一个提要,并且每个用户id的提要都不同
如果我自己提供CRX文件,我可以通过编写一个快速PHP脚本来完成这项工作,该脚本在下载请求时更改清单,并使用特定逻辑插入id,同时将相同的id插入mysql表
在通过Chrome Web Store为扩展提供服务时,如何做到这一点?不要在清单文件中包含特定于用户的值。更好的方法是使用扩展的持久性
定义此类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+,它允许用户同步他们的个人资料和设置
您也可以在服务器端实现逻辑,而不是在第一次运行时检查和检索id。例如,假设服务器的响应格式是JSON。然后,只需在响应中定义uid(可选,仅当它已更改时):
服务器必须实现以下功能:
如果请求(查询字符串?)。
- 如果
用户ID
无效,则生成一个,并将其包含在响应中
您的应用程序的逻辑在这里
这会导致响应如下所示(要使用PHP生成JSON,请使用):
还有一个问题。。目前,该逻辑的工作方式是,用户请求下载具有预定义用户id值的扩展,然后我有一个php脚本,该脚本编辑驱动器上的清单文件,创建CRX并为用户服务。你上面写的很好,我应该更改保存用户id的位置,但我仍然不确定如何获取var值(本例中的用户id)从URL请求到特定用户下载时CRX中的任何位置-无论我使用的是chrome存储功能还是清单方式..@user838437,在我建议的解决方案中,扩展名(CRX文件)中都不包括id。它是在用户第一次使用扩展时生成和设置的。流程:1.客户端:请求CRX,2.服务器:提供静态CRX文件3.客户端:安装CRX文件4.客户端(首次运行):请求提要,包括一个无效的用户ID。5.服务器:找不到有效的用户ID,响应新的用户ID和提要。6.客户机:记住用户ID。稍后:客户端检查新的提要:A.客户端:发送用户id 3.服务器:识别用户id,发送特定于用户的提要响应。好的,但是如果我想要一个预定义的用户id,我该怎么做?@user838437不,Chrome Web Store不提供这种级别的灵活性。
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":"some unique user identifier", ....}