我在使用torii适配器进行Facebook身份验证时遇到问题,错误是:“Torii适配器必须实现open才能打开 session ”。

我访问了许多教程,并尝试了所有介绍的方法,但是大多数方法通常都是旧的 Ember 代码,而且似乎都没有实际的作用。

当前状态:我可以登录,可以看到Facebook弹出窗口并且可以授权。

使用提琴手,我还可以看到来自API的响应,该响应包含一个JSON响应,以及来自经过身份验证的用户的所有凭据。
在Firebase控制台中,我可以看到授权用户,重置其密码,拒绝访问,...

所有这些使我相信,这“仅仅是”一个前端问题,我似乎无法建立一个合适的“ session ”来进行工作。

我的最终目标是获取相关的用户数据并将其作为“用户”条目传输到我的Firebase后端,以便快速注册网站访问者,但我很高兴能进行一次活跃的 session ,因此我可以剩下的事我自己解决。

作为前端菜鸟(我通常使用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(),
});

路由/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));
    }
  }
});

application.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

最佳答案

我遇到了同样的问题,并且注意到我的torii-adapters/application.js位于pods结构下(因为我使用了它)。因此,我将torii-adapters文件夹移到app文件夹,一切开始工作。

10-06 12:34