使用Emberfire和Torii进行Firebase 3身份验证

时间:2017-03-07 04:07:17

标签: firebase ember.js ember-cli emberfire torii

我尝试使用Firebase的电子邮件/密码提供程序进行身份验证,但不断收到以下错误:

  

未捕获的TypeError:无法读取属性'打开'未定义的

这是我的应用程序的样子:

应用程序/鸟居的适配器/ 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()
});

app / templates / components / login-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);
      });
    }, 

使用https://github.com/firebase/emberfire上显示的相同config / environment.js设置和我的firebase项目域和密钥。还有

torii: {
      sessionServiceName: 'session'
    },

我的firebase帐户也启用了电子邮件/密码提供程序。

不确定断开连接的位置。任何帮助深表感谢。谢谢!
* Ember-CLI v2.11 * Emberfire v2.0.6 * Torii v0.8.1 *节点v6.9.5

2 个答案:

答案 0 :(得分:3)

signIn操作按钮不会告诉您的ember应用程序您正在使用的提供程序,只提供了登录凭据,它应该如下所示:

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

最后您的signIn操作代码应如下所示:

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);
  });
}, 

答案 1 :(得分:0)

对于其他任何人收到此错误,此时 Ember版本2.13.1与Emberfire和torii 有错误:内部“torii”实例为undefined作为获取所有者的机制或者工厂在Ember 2.13中略有变化,因此无法调用“打开”。到目前为止,最新的工作版本是2.12.0

更多信息:https://github.com/firebase/emberfire/issues/503