Аутентификация Firebase 3 с помощью Emberfire и Torii

Я пытаюсь пройти проверку подлинности с провайдером электронной почты и паролей Firebase, но получаю следующую ошибку:

Uncaught TypeError: Невозможно прочитать свойство 'open' из неопределенного

Вот как выглядит мое приложение:

приложение / торий-адаптеры /applications.js

import Ember from 'ember';
import ToriiFirebaseAdapter from 'emberfire/torii-adapters/firebase';

export default ToriiFirebaseAdapter.extend({
     firebase: Ember.inject.service()
});

приложение / адаптеры /application.js

import Ember from 'ember';
import FirebaseAdapter from 'emberfire/adapters/firebase';

const { inject } = Ember;

export default FirebaseAdapter.extend({
  firebase: inject.service()
});

приложение / шаблоны / Компоненты / Логин-cmp.hbs

 ...   
                  <form class="col s12">
                      <div class="row">
                        <div class="input-field col s12">
                          {{input
                            id="userEmail"
                            type="email"
                            value=email
                            class="validate"
                          }}
                          <label for="email">Email</label>
                        </div>
                      </div>
                      <div class="row">
                        <div class="input-field col s12">
                          {{input
                            id="userPassword"
                            type="password"
                            value=password
                            class="validate"
                          }}
                          <label for="password">Password</label>
                        </div>
                      </div>
                      <div class="row">
                        <div class="col s12 m4">
                          <button class="btn waves-effect waves-light btn-large mt-20 mb-10" type="submit" {{action 'signIn' email password}}>Sign in
                            <i class="material-icons right">send</i>
                          </button>
                        </div>                    
                      </div>
                    </form>

приложение / компоненты / Логин-cmp.js

signIn: function(email, password) {
      this.get('session').open('firebase', { provider: 'password', email: email, password: password}).then(function(data) {
        console.log(data.currentUser);
      });
    }, 

Используя ту же настройку config/environment.js, которая показана на https://github.com/firebase/emberfire с моими доменами и ключами проектов firebase. Также есть

torii: {
      sessionServiceName: 'session'
    },

У меня также есть провайдер электронной почты / пароля, включенный в моей учетной записи firebase.

Не уверен, где отключение. Буду признателен за любую оказанную помощь. Спасибо!
* Ember-CLI v2.11 * Emberfire v2.0.6 * Torii v0.8.1 * Узел v6.9.5

2 ответа

Решение

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

{{action 'signIn' "password" email password}}

и, наконец, ваш код действия входа в систему должен выглядеть следующим образом:

signIn() {
  let controller = this;
  this.get('session').open('firebase', { provider: 'password', email: this.get('email') || '', password: this.get('password') || ''}).then(function(data) {
    console.log(data.currentUser);
  });
}, 

Для всех, кто получил эту ошибку, в настоящее время Ember версии 2.13.1 имеет ошибку с Emberfire и torii: внутренний экземпляр "torii" undefined поскольку механизм получения владельца или фабрики был немного изменен в Ember 2.13, поэтому "открыть" нельзя называть. Пока последняя рабочая версия - 2.12.0.

Дополнительная информация: https://github.com/firebase/emberfire/issues/503

Другие вопросы по тегам