我正在尝试使用Firebase的电子邮件/密码提供程序进行身份验证,但不断收到以下错误:
未捕获的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);
});
},
使用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 回答
signIn操作按钮不会告诉您的ember应用程序您正在使用的提供程序,仅提供了登录凭据,它应如下所示:
最后你的signIn动作代码应如下所示:
对于其他任何人收到此错误,此时 Ember version 2.13.1 has an error with Emberfire and torii :内部"torii"实例是
undefined
,因为获取所有者或工厂的机制在Ember 2.13中略有变化,因此无法调用"open" . 到目前为止 latest working version is 2.12.0 .更多信息:https://github.com/firebase/emberfire/issues/503