Как аутентифицировать пользователя Firebase в пользовательском элементе Polymer?

У меня есть приложение Polymer, в котором я хочу использовать аутентификацию Firebase. Я создал пользовательский элемент с формой <paper-dialog> с электронной почтой и паролем.

Если я включу элементы <firebase-app> и <firebase-auth> в пользовательский элемент, я смогу аутентифицировать пользователя. Все идет нормально.

Проблема возникает, когда я хочу вывести пользователя из приложения с помощью кнопки/функции в корневом элементе. Мне нужно получить элемент <firebase-auth>, чтобы вызвать его метод signOut. Я нахожу элемент <firebase-auth> с $.id или $$('#id'), но он возвращает null.

Если я перемещу элементы <firebase-auth> и <firebase-app> в корневой элемент, у меня возникнет та же проблема при попытке доступа к ним из моего пользовательского элемента входа.

Если я добавлю только элемент <firebase-auth> в оба места, я получу 'No app configured for auth', а если я также добавлю элемент <firebase-app> в оба места, я получу 'Default app already defined'.

Как я могу заставить это работать?


person kpg    schedule 17.08.2016    source источник
comment
Можете ли вы привести пример вашего фактического кода, который не работает? Из вашего описания не совсем понятно, в чем проблема.   -  person Michael Bleigh    schedule 18.08.2016
comment
Проблема в том, что я пробовал несколько решений, как описано, но не могу заставить ни одно из них работать. Я не уверен, что смогу добавить код для каждого из вариантов.   -  person kpg    schedule 18.08.2016


Ответы (2)


Мне не удалось найти решение с обработкой аутентификации в моем <signin-dialog>. Что сработало для меня, так это оставить <firebase-app> и <firebase-auth> в моем элементе <app> верхнего уровня, затем запустить событие из <signin-dialog> и вызвать ментод <firebase-auth> signIn из EvenHandler в <app>:

<app>
<iron-ajax auto url="https://apiserver/config" handle-as="json" last-response="{{config}}"></iron-ajax>

        <template is="dom-if" if="{{config}}">
          <firebase-app auth-domain="{{config.fbWebConfig.authDomain}}" database-url="{{config.fbWebConfig.databaseURL}}" api-key="{{config.fbWebConfig.apiKey}}">
          </firebase-app>
          <firebase-auth id="auth" name='auth' user="{{user}}" on-error="handleAuthError">
          </firebase-auth>
            <signin-dialog user={{user}}></signin-dialog>
        </template>  
</app>
person kpg    schedule 18.08.2016

В вашей функции кнопки вы можете просто вызвать следующий JavaScript, чтобы выйти из Firebase:

firebase.auth().signOut();
person Ian Edwards    schedule 25.08.2016