Javascript 无法在Chrome扩展中获取Firebase消息传递令牌

Javascript 无法在Chrome扩展中获取Firebase消息传递令牌,javascript,google-chrome,firebase,google-chrome-extension,firebase-cloud-messaging,Javascript,Google Chrome,Firebase,Google Chrome Extension,Firebase Cloud Messaging,我正在构建一个接收推送通知的chrome扩展。这在firebase的早期版本(4.4.0)中有效,但在最近升级到5.2.0后,我再也无法获得令牌。请注意,在这次升级过程中,我清除了一些缓存并做了一些额外的更改,因此这可能与新的FB版本无关 从下面的代码和输出可以看出,当我执行getToken()承诺时,它从不调用“then”或“catch”处理程序。在控制台、网络选项卡或任何其他指示正在发生任何事情的信息中,我都看不到任何消息。有什么想法吗 Chrome版本67.0.3396.99(官方版本)

我正在构建一个接收推送通知的chrome扩展。这在firebase的早期版本(4.4.0)中有效,但在最近升级到5.2.0后,我再也无法获得令牌。请注意,在这次升级过程中,我清除了一些缓存并做了一些额外的更改,因此这可能与新的FB版本无关

从下面的代码和输出可以看出,当我执行getToken()承诺时,它从不调用“then”或“catch”处理程序。在控制台、网络选项卡或任何其他指示正在发生任何事情的信息中,我都看不到任何消息。有什么想法吗

  • Chrome版本67.0.3396.99(官方版本)(64位)
  • MAC 10.12.6
我的扩展名background.js中的代码:

var config = {
    apiKey: "...",
    authDomain: "...",
    databaseURL: "...",
    projectId: "...",
    storageBucket: "",
    messagingSenderId: "..."
};

firebase.initializeApp(config);
var fbmessaging = firebase.messaging();

function getToken(){

    trace('Getting new token');
    var promise = fbmessaging.getToken();

    trace('Have getToken() promise.  Executing.');
    promise.then(function(newToken) {
        trace('New token received: ' +newToken);
    })
    .catch(function(err) {
        trace('Unable to retrieve refreshed token ', err);
    });
}

fbmessaging.requestPermission()
.then(function() {
    trace('Notification permission granted.');
    getToken();
}).catch(function(err) {
    trace('Unable to get firebase messaging permission: ' +err);
});

fbmessaging.onTokenRefresh(function(arg) {
    trace("OnTokenRefresh called. " +arg);
    getToken();
});
跟踪的完整输出:

Notification permission granted.
Getting new token
Have getToken() promise.  Executing.

我已经能够确定,尽管从requestPermission()收到了已授予权限的响应,但仍然存在一个问题。如果我在chrome设置中将扩展名的ID手动添加到我的通知“允许”列表中,则getToken()将正常返回。我已尝试从清单中删除“gcm”和“通知”权限,以查看是否可以触发通知批准提示,但从未收到提示。我已经调查/测试了其他方法,例如从“真实”网站注册推送通知&服务工作者,但由于服务工作者中没有chrome.runtime,因此无法将消息传递到我的扩展。有什么办法可以通知我的分机吗?