Аутентификация Firebase во всплывающем окне расширения Chrome

Я пытаюсь получить аутентификацию (адрес электронной почты / пароль) для работы в расширении Chrome. Кажется, у меня все работает нормально, если я помещаю свой код аутентификации в фоновый скрипт. Однако я не могу заставить его работать как скрипт действия браузера.

Я использовал следующий код в качестве основы своего расширения: https://github.com/firebase/firebase-chrome-extension

Я изменил browser_action.js на:

Firebase.enableLogging(true);
var f = new Firebase('https://myapp.firebaseio.com/');

f.authWithPassword({    
    email    : "[email protected]",
    password : "1234"
}, function(error, authData) {
    if (error) {
        alert("Login Failed!", error);
} else {
    alert("Authenticated successfully with payload:", authData);
}
});

И я оставил существующий browser_action.html без изменений:

<!doctype html>


<style type="text/css">
    #mainPopup {
        padding: 10px;
        height: 200px;
        width: 400px;
        font-family: Helvetica, Ubuntu, Arial, sans-serif;
    }
    h1 {
        font-size: 2em;
    }
</style>

<div id="mainPopup">
<h1>Firebase test!</h1>
<p>Clicks: <span id="contents"></span></p>
</div>

<script type="text/javascript" src="https://cdn.firebase.com/v0/firebase.js"></script>
<script src="browser_action.js"></script>

Когда я загружаю расширение и нажимаю на значок, в консоли появляется следующая ошибка:

Uncaught TypeError: f.authWithPassword is not a function

Если я перенесу код firebase и код аутентификации в файл background.js, он заработает и выдает предупреждение об успешной аутентификации.

Что я делаю не так или почему это невозможно?


person DivZero    schedule 26.01.2016    source источник


Ответы (2)


Этот пример расширения Chrome не обновлялся 3 года, поэтому его версия Firebase устарела. Замените https://cdn.firebase.com/v0/firebase.js на https://cdn.firebase.com/js/client/2.2.1/firebase.js в browser_action.html, и вы сможете успешно использовать authWithPassword.

person heenenee    schedule 02.02.2016
comment
Я идиот: ') ... Я предположил, что v0 означает, что он всегда будет получать последнюю версию библиотеки. Я был неправ XD - person DivZero; 03.02.2016

Для всех, кто сталкивается с этим с июля 2016 года, Firebase предлагает обновленный набор инструкций по настройке аутентификации для расширений Chrome (в их примере они используют Google Auth). Я перепрыгнул через кучу обручей, прежде чем наткнулся на этот пост .. Надеюсь сэкономить время. https://github.com/firebase/quickstart-js/tree/master/auth/chromextension

person chumster    schedule 17.09.2016
comment
Проблема в том, что этот пример кода также устарел: в README автор ссылается на элемент пользовательского интерфейса в консоли Firebase, который больше не существует: занести в белый список идентификаторы клиентов из внешних проектов (необязательно). - person FractalBob; 27.10.2019