Невозможно отправить ответ на сообщение обратно в сценарий содержимого в расширении 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(...) в методе обратного вызова. Вместо этого я добавил предупреждение, и оно сработало нормально.

Другие вопросы по тегам