Невозможно отправить ответ на сообщение обратно в сценарий содержимого в расширении Chrome с помощью Manifest V3
Я успешно запускаю webauthflow к социальному провайдеру OAuth из фонового скрипта сервис- воркера (согласно требованиям манифеста v3 фоновые скрипты теперь являются полноценными сервис-воркерами)
Однако я не могу отправить сообщение обратно своему сценарию содержимого в самом простом сценарии.
Вот мой сервис-воркер ( background.js)
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if(request.message === "login"){
if(user_signed_in){
console.log("already signed in");
} else {
chrome.identity.launchWebAuthFlow({
url: createOAuthEndpoint(),
interactive: true,
}, function(redirect_uri){
if(chrome.runtime.lastError) {
sendResponse({message: "fail"});
} else{
if(redirect_uri.includes("error")){
sendResponse({message: "fail"});
} else {
//we get here but this message is never sent
sendResponse({message: "success", profile: "blah"});
}
}
});
}
}
return true;
});
А вот мой контент-скрипт ... ( popupsignin.js)
document.querySelector('#sign-in').addEventListener('click', () => {
chrome.runtime.sendMessage({ message: 'login' }, (response) => {
console.log('got the response'); //this log is never written
if (response.message === 'success'){
console.log(response.profile);
}
});
});
1 ответ
Оказывается, с кодом все в порядке. Мне почему-то негде было прочитать вывод console.log(...) в методе обратного вызова. Вместо этого я добавил предупреждение, и оно сработало нормально.