【发布时间】:2017-03-31 11:42:47
【问题描述】:
我在使用 torii 适配器进行 Facebook 身份验证时遇到问题,错误是:“Torii 适配器必须实现 open 才能打开会话”。
我访问了很多教程,并尝试了所有介绍的方法,但其中大多数通常是旧的 ember 代码,而且似乎没有一个真正有效。
当前状态:我可以登录,我得到了 facebook 弹出窗口,我可以授权。
使用 fiddler,我还可以看到来自 API 的响应,其中包含一个 JSON 响应,其中包含来自我进行身份验证的用户的所有凭据。 在 Firebase 控制台中,我可以看到授权用户、重置其密码、拒绝访问、...
所有这一切让我相信这“仅仅是”一个前端问题,我似乎无法建立一个合适的“会话”来处理。
我的最终目标是获取相关的用户数据并将其作为“用户”条目传输到我的 Firebase 后端,从而允许网站访问者快速注册,但我会非常高兴有一个活跃的会话所以我可以自己解决剩下的问题。
作为一个前端菜鸟(我通常编写 C# 代码),Ember 可能不是掌握它的最佳选择,但我已经到此为止了,我不打算让一切顺其自然建立一个不同的框架。
我的代码:
config/environment.js
firebase: {
apiKey: 'xxxxxxx',
authDomain: 'myappname.firebaseapp.com',
databaseURL: 'https://myappname.firebaseio.com',
storageBucket: 'myappname.appspot.com',
messagingSenderId: '1234567890'
},
torii: {
sessionServiceName: 'session'
}
torii-adapters/application.js(我已经改变了很多,我什至不记得原始代码是什么,因为我在这里更改/添加/删除的内容似乎根本没有做任何事情。)
import Ember from 'ember';
import ToriiFirebaseAdapter from 'emberfire/torii-adapters/firebase';
export default ToriiFirebaseAdapter.extend({
firebase: Ember.inject.service(),
});
routes/application.js
import Ember from 'ember';
export default Ember.Route.extend({
beforeModel: function() {
return this.get('session').fetch().catch(function() {
});
},
actions:{
login: function(provider) {
this.get('session').open('firebase', {
provider: provider,
}).then(function(data) {
console.log(data.currentUser);
});
},
logout: function() {
this.get('session').close().then(function() {
this.transitionTo('application');
}.bind(this));
}
}
});
应用程序.hbs
<div class="container">
{{partial 'navbar'}}
<a {{action "signIn" "facebook"}} class="btn">{{fa-icon "facebook"}}</a>
<a {{action "signIn" "twitter"}} class="btn">{{fa-icon "twitter"}}</a>
<a {{action "signIn" "github"}} class="btn">{{fa-icon "github"}}</a>
<a {{action "signIn" "google"}} class="btn">{{fa-icon "google"}}</a>
{{outlet}}
</div>
编辑 1
重启 ember 服务器后,上面的代码给了我更多的错误。这就是我烦恼的原因吗?所有看似没有改变的更改,直到服务器重新启动后才注册?如果是这样的话,我可能已经通过了大约一百次正确的解决方案......
编辑 2
更改了代码以反映实际问题。之前的代码被搞砸了,但我从来没有意识到它,因为它直到服务器重新启动后才恢复。
编辑 3 找到并尝试了这个,但无济于事:https://stackoverflow.com/a/32079863/4309050
【问题讨论】:
标签: firebase ember.js authorization firebase-authentication torii