我正在开发一个 Chrome 扩展程序,它将要求用户登录帐户才能查看其内容。我想要做的是通过在用户登录后保存某种 cookie 或带有相关登录/ session 数据的 localStorage 来防止用户每次都必须登录。
到目前为止,经过一些研究后,似乎使用 Google Chromes 本地存储 API 将是执行此操作的最佳方式(如果有人能证实这一点,那就太好了)。
我的问题是设置和获取本地存储。我在这里设置了一个虚拟本地存储场景,只是为了尝试让 Chrome 为扩展程序存储任何类型的本地存储:
弹出.js:
function setCookie(){
chrome.extension.sendMessage({name: 'setLoginCookie'}, function(otherResponse) {
console.log(otherResponse)
})
}
function getCookie(){
chrome.extension.sendMessage({name: 'getloginCookie'}, function(response) {
alert(response)
})
}
事件.js:
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (request.name == 'setLoginCookie') {
var obj = {test:"test"}
chrome.storage.sync.set(obj, function() {
alert('Data saved');
});
}
if (request.name == 'getLoginCookie') {
chrome.storage.sync.get('test', function(data) {
sendResponse({ screenshotUrl: data.test });
})
}
return true;
});
执行 setCookie 函数时,我收到“数据已保存!”的警报这向我表明它已经工作,但是当我检查我的扩展 Chrome 开发工具上的本地存储时,那里什么也没有,如果我调用 getCookie
函数,那么它不会接收任何东西。
这是我的 manifest.json 中的权限:
"permissions": [
"storage",
"cookies",
"tabs",
"<all_urls>",
"pageCapture",
"downloads"
],
我在这里使用了错误的方法吗?使用 chrome.storage.sync
可能是我哪里出错了吗?
谢谢
最佳答案
chrome.storage.sync
与本地存储不同,您不会在开发工具本地存储中看到使用此方法保存的数据。
您的消息不匹配。您正在使用 {name: 'getloginCookie'}
发送消息,if
语句正在检查 getLoginCookie
。区别在于您传递给 sendMessage
函数的参数中的小写 l
。
关于javascript - Chrome 扩展程序 - 保存弹出窗口的登录详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46363452/