Я разрабатываю расширение Chrome, и внутри фонового скрипта во время запуска браузера я пытаюсь получить сохраненные переменные для обновления расширения. Это работает нормально в первый раз, однако, как только я получаю переменные, я затем вызываю сетевой скрипт, и когда этот файл пытается получить переменную, он перестает работать.
Фоновый скрипт:
chrome.storage.local.get(["accessToken", "fileId", "date"], (result) => {
if(result.accessToken && result.fileId && result.date) {
axios.defaults.headers.common["Authorization"] = "Bearer " + result.accessToken;
getLastChanged(result.fileId)
.then(date => {
if(date !== result.date) {
getFile(result.fileId)
.then(file => {
chrome.storage.local.set({links:file, date:date});
});
}
})
});
Сетевой сценарий:
chrome.storage.local.get(["refreshToken"], (result) => {
if(result.refreshToken){
axios.post("https://oauth2.googleapis.com/token", {
refresh_token:result.refreshToken,
client_id:clientId.installed.client_id,
client_secret:clientId.installed.client_secret,
grant_type:"refresh_token"
}).then(res => {
axios.defaults.headers.common["Authorization"] = "Bearer " + res.data.accessToken;
chrome.storage.local.set({accessToken:res.data.access_token});
resolve();
}).catch(err => reject(err));
}
reject("no refresh token");
});
Фоновый сценарий может получить эти три значения очень хорошо, но когда сетевой сценарий пытается получить токен обновления, он возвращает неопределенное значение. Когда я проверяю локальное хранилище, там есть токен обновления, и когда я открываю окно расширения, я запускаю точно такой же сетевой сценарий, чтобы проверить, обновлен ли он, и он работает нормально. Это только во время запуска браузера, и только с этим единственным значением, которое не работает.