【问题标题】:Firebase 3 Authentication with Emberfire and Torii使用 Emberfire 和 Torii 进行 Firebase 3 身份验证
【发布时间】:2017-07-27 04:10:07
【问题描述】:

我正在尝试通过 Firebase 的电子邮件/密码提供商进行身份验证,但不断收到以下错误:

未捕获的类型错误:无法读取未定义的属性“打开”

我的应用如下所示:

app/torii-adapters/applications.js

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

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

app/adapters/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>

app/components/login-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 * 鸟居 v0.8.1 * 节点 v6.9.5

【问题讨论】:

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


    【解决方案1】:

    对于遇到此错误的其他人,此时 Ember 版本 2.13.1 与 Emberfire 和 torii 存在错误:内部“torii”实例为 undefined 作为获取所有者或工厂的机制在 Ember 2.13 中略有改动,因此不能调用“open”。到目前为止,最新的工作版本是 2.12.0

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

    【讨论】:

      【解决方案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);
        });
      }, 
      

      【讨论】:

      • 不幸的是,这并没有解决问题。仍然收到相同的控制台错误。
      • 是的,这不能解决问题。组件与调用它的上下文隔离。它不知道它正在呈现什么模板,因此应该使用闭包动作将动作传递到您的组件中。我可以看看你在哪里调用 login-cmp 吗?
      • 该组件在我的 application.hbs 上被调用(顺便说一句,这是一个模态)。我认为您使用关闭操作是正确的,因为我确实必须使用我正在使用的另一个 cmp 来执行此操作。目前我只像这样调用 cmp {{login-cmp}}。另外,有没有一种简单的方法可以测试 Torii 是否存在?我想这也可能与此有关。
      • 如何传入多个关闭操作? (signUp、signOut、googleLogin 等)
      • 谢谢@Falke。我通过使用关闭动作让它工作。我的 cmp.js 看起来像这样:signIn: function(email, password) { this.attrs.login(email,password); }, 而我调用 cmp 的位置看起来像这样:{{login-cmp login=(route-action 'signIn')}}
      猜你喜欢
      • 2016-10-11
      • 2015-11-08
      • 2018-12-06
      • 2020-10-09
      • 2017-03-11
      • 2018-10-19
      • 2022-01-12
      • 2020-09-02
      • 1970-01-01
      相关资源
      最近更新 更多