Firefox插件中的Firebase:在运行此应用程序的环境中不支持此操作

时间:2018-10-13 14:49:22

标签: firebase firebase-authentication firefox-addon

编辑:

我刚刚发现我错误地捕获了错误,并且存在一些错误:

  

在运行该应用程序的环境中不支持此操作。 \“ location.protocol \”必须为http,https或chrome-extension,并且必须启用网络存储

这很有意义,因为我的页面的地址始于moz-extension

有没有解决方法?

原始问题:

我正在构建Firefox扩展。它更改了打开新选项卡后显示的默认页面。我想在该页面上使用Firebase Auth。

在显示的html内,我创建了一个按钮,该按钮将用于Google登录。单击后,将执行以下代码:

var provider = new firebase.auth.GoogleAuthProvider();

$("#authenticated_user_content").hide();

$("#google_login").on("click", function() {
  console.log("GOogle login");
  firebase
    .auth()
    .signInWithPopup(provider)
    .then(function(result) {
      // This gives you a Google Access Token. You can use it to access the Google API.
      var token = result.credential.accessToken;
      // The signed-in user info.
      var user = result.user;
      // ...
      $("#not_logged_in_content").show();
      $("#authenticated_user_content").show();
    })
    .catch(function(error) {
      // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;
      // The email of the user's account used.
      var email = error.email;
      // The firebase.auth.AuthCredential type that was used.
      var credential = error.credential;
      // ...
    });
});

会发生什么:单击#google_login会在浏览器控制台中显示“ Google登录”消息,但没有带有Google登录表单的弹出窗口。

Firefox在控制台中未显示任何错误(在浏览器中单击F12之后)。我厌倦了去about:debugging并单击扩展名旁边的Debug。单击#google_login按钮后,会出现新窗口并显示此消息:

  

TypeError:无法访问死对象

我还有其他方法可以调查出什么问题吗?为什么不显示弹出窗口? Firefox是否会在扩展程序显示的网页中阻止此类功能?

1 个答案:

答案 0 :(得分:0)

您需要创建Google provider对象的实例:

var provider = new firebase.auth.GoogleAuthProvider();

之前

firebase
    .auth()
    .signInWithPopup(provider)

可选:指定要从身份验证提供程序请求的其他OAuth 2.0范围。要添加范围,请调用addScope。例如:

provider.addScope('https://www.googleapis.com/auth/contacts.readonly');

请参阅身份验证提供者documentation。并且有more options