Firebase в Firefox Addon: эта операция не поддерживается в среде, в которой работает это приложение - PullRequest
0 голосов
/ 13 октября 2018

РЕДАКТИРОВАТЬ:

Я только что заметил, что я неправильно обнаружил ошибки и есть некоторые ошибки:

Эта операция не поддерживается всреда, в которой работает это приложение.\ "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 login», но нет всплывающего окна с формой входа Google.

Firefox не показывает никаких ошибок в консоли (после нажатия F12 в браузере).Я устал ходить по about:debugging и нажал Debug рядом с моим добавочным номером.Новое окно появилось и отобразило это сообщение после нажатия кнопки #google_login:

TypeError: невозможно получить доступ к мертвому объекту

Есть ли другие способы, которыми я мог бы исследовать то, чтонеправильно?Почему всплывающее окно не появляется?Блокирует ли Firefox такую ​​функциональность на веб-страницах, отображаемых расширениями?

1 Ответ

0 голосов
/ 13 октября 2018

Вам необходимо создать экземпляр объекта провайдера Google:

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

До

firebase
    .auth()
    .signInWithPopup(provider)

Необязательно : укажите дополнительные области OAuth 2.0, которые вы хотитезапросить у провайдера аутентификации.Чтобы добавить область, вызовите addScope.Например:

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

См. Провайдер аутентификации Документация .И есть больше вариантов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...