Как получить локальный токен локального хранилища в chrome-extension для автоматического входа в систему

$ echo "bar embarassment"|awk '{for(o=1;o<=NF;o++)if($o=="bar")$o="no bar"}1'
no bar embarassment
0
задан myfavs.in 13 July 2018 в 04:25
поделиться

3 ответа

Сначала установите прослушиватель событий в событие browserAction.onClicked, которое обращается к локальному хранилищу и получает токен. Затем вы можете передать свой токен в свою функцию входа. Содержимое прослушивателя событий будет работать в других файлах, но сам прослушиватель событий не будет (он должен быть запущен в фоновом режиме для прослушивания события).

background.js

chrome.browserAction.onClicked.addListener(function () { 
  // event listener
  chrome.storage.local.get("token", function(items) {
    let token = items["token"]
    login(token)
  })
})

function login(token) {
  // login code here
}
1
ответ дан Ben Botvinick 17 August 2018 в 13:41
поделиться
  • 1
    Спасибо за повтор. Я попробовал, чтобы этот не смог получить токен локального хранилища веб-приложений в сценарии содержимого. – myfavs.in 13 July 2018 в 05:06
  • 2
    Уверены ли вы поместить его в свои разрешения в манифесте? – Ben Botvinick 13 July 2018 в 05:09
  • 3
    Да. & quot; разрешения ": [" контекстМенус "," хранилище "," уведомления "," вкладки "," : // * / "," & lt; all_urls & quot; " ; ], – myfavs.in 13 July 2018 в 05:11
  • 4
    Какая ошибка? Вероятно, причина в том, что вы ищете неправильный ключ в объекте, возвращенном из запроса на хранение – Ben Botvinick 13 July 2018 в 05:11
chrome.storage.local.get(['key'], function(result) {
          console.log('Value currently is ' + result.key);
        });

вы хотите передать имя свойства токена этой функции.

function getLocalStorage(key, callback){
    chrome.storage.local.get(key, function(value){
        callback(value);
    });
}

getLocalStorage('YourStorageName', function(data){
    //process
})
0
ответ дан Dananjaya Ariyasena 17 August 2018 в 13:41
поделиться
  • 1
    @Jujhar Почему вы сохраняете значения для каждой вкладки? для процесса, такого как логин, мы должны иметь одно значение токена. поэтому нет необходимости хранить несколько токенов под вкладками. – Dananjaya Ariyasena 13 July 2018 в 04:36
  • 2
    Спасибо за повтор. Я попробовал, чтобы этот не смог получить токен локального хранилища веб-приложений в сценарии содержимого. – myfavs.in 13 July 2018 в 05:04
  • 3
    Скрипты содержимого выполняются в контексте веб-страниц, а не страниц расширения. Поэтому, если вы получаете доступ к localStorage из вашего содержимого, это будет хранилище с этой веб-страницы, а не хранилище дополнительных страниц. проверьте эту ссылку stackoverflow.com/questions/3937000/… – Dananjaya Ariyasena 13 July 2018 в 05:37

вы можете использовать сообщения для отправки токена.

сценарий содержимого:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    if (request.method == "getLoginToken") {
        sendResponse({token: localStorage["token"]});
    }
});

и когда вы хотите получить доступ к токену

chrome.runtime.sendMessage({method: "getLoginToken"}, function(response) {
    if (response && response.token) {
        console.log(response.token);
    }
});
0
ответ дан Jujhar Singh 17 August 2018 в 13:41
поделиться
  • 1
    Спасибо за быстрый ответ. При этом я могу получить доступ к локальному хранилищу расширения. Но мне нужно получить доступ к веб-сайту (определенному в manifest.json (homepage_url)) локальному хранилищу, – myfavs.in 13 July 2018 в 05:02
  • 2
    Content scripts are files that run in the context of web pages., но это делает именно то, что @ myfavs.in – Jujhar Singh 13 July 2018 в 08:43
Другие вопросы по тегам:

Похожие вопросы: