Javascript Chrome扩展-保存弹出窗口的登录详细信息
我正在开发一个Chrome扩展,它需要用户登录一个帐户才能看到他们的内容。我想做的是防止用户每次登录时都必须使用相关登录/会话数据保存某种cookie或localStorage 到目前为止,在做了一些研究之后,使用谷歌Chromes本地存储API似乎是最好的方法(如果有人能证实这一点,那就太好了) 我的问题是设置和获取本地存储。我在这里设置了一个虚拟本地存储场景,只是想让Chrome为扩展存储任何类型的本地存储: Popup.js:Javascript Chrome扩展-保存弹出窗口的登录详细信息,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在开发一个Chrome扩展,它需要用户登录一个帐户才能看到他们的内容。我想做的是防止用户每次登录时都必须使用相关登录/会话数据保存某种cookie或localStorage 到目前为止,在做了一些研究之后,使用谷歌Chromes本地存储API似乎是最好的方法(如果有人能证实这一点,那就太好了) 我的问题是设置和获取本地存储。我在这里设置了一个虚拟本地存储场景,只是想让Chrome为扩展存储任何类型的本地存储: Popup.js: function setCookie(){ chrom
function setCookie(){
chrome.extension.sendMessage({name: 'setLoginCookie'}, function(otherResponse) {
console.log(otherResponse)
})
}
function getCookie(){
chrome.extension.sendMessage({name: 'getloginCookie'}, function(response) {
alert(response)
})
}
event.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
函数,那么它就什么都没有了
以下是my manifest.json中的权限:
"permissions": [
"storage",
"cookies",
"tabs",
"<all_urls>",
"pageCapture",
"downloads"
],
“权限”:[
“存储”,
“饼干”,
“标签”,
"",
“页面捕获”,
“下载”
],
我在这里用错方法了吗?是否正在使用chrome.storage.sync
可能是哪里出了问题
谢谢,chrome.storage.sync与本地存储不同,在开发工具本地存储中,您将看不到使用此方法保存的数据 您的消息不匹配。您正在使用
{name:'getloginCookie'}
发送消息,并且if
语句正在检查getloginCookie
。不同之处在于传递给sendMessage
函数的参数中的小写字母l
当我在我的Chrome开发工具上检查本地存储时,那里什么都没有
开发工具不会暴露其中的chrome.storage
“本地存储”项将公开localStorage
要检查扩展的chrome.storage
,您可以从控制台使用或简单调用chrome.storage.sync.get(null,(data)=>{console.log(data)})
注意:您不必将使用
chrome.storage
的工作委托给您的事件页面chrome.storage
可直接从所有扩展上下文(后台、弹出窗口、选项、内容脚本)访问。不要仅仅为了这个而对消息进行分层。1。2.如何调用getCookie?为什么不直接在弹出窗口中存储和获取数据chrome.storage.local
在后台上下文(包括弹出窗口)和内容脚本中的任何页面都可用。好的,我刚刚看到扩展上次通过时在扩展中有一些会话存储,所以我想知道他们是如何做到的!您可以从扩展内部使用sessionStorage
/localStorage
,但它与域绑定,因此不能与内容脚本共享chrome.storage
是一个新的API,在这些应用程序之间共享。这是一个问题,也是一个好地方。代表我犯了愚蠢的错误。那么您是否同意使用chrome.storage.sync是存储登录/会话详细信息的正确方法?@BenLiger那么您是否认为我们可以使用其他方法在chrome扩展中保存登录的会话?如果不在本地存储中存储用户密码,我就不知道如何存储会话以防止重新登录?@Hafizallylalani您可以从这里了解有关chrome extensions中存储的更多信息。我应该在询问之前阅读它,但现在有一个足够清楚的信息,本地存储不应用于存储用户数据。