0

我成功地从服务工作者后台脚本向社交 OAuth 提供者启动了webauthflow(根据清单 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);            
        }
    });
});
4

1 回答 1

0

事实证明代码没有任何问题。出于某种原因,我无法在回调方法中读取 console.log(...) 输出。我添加了一个警报,它触发得很好。

于 2021-05-04T12:59:43.943 回答