ember simple auth和Tori firebase TypeError:将循环结构转换为JSON

ember simple auth和Tori firebase TypeError:将循环结构转换为JSON,firebase,ember.js,ember-simple-auth,emberfire,Firebase,Ember.js,Ember Simple Auth,Emberfire,我开始让torri和emberfire为登录页面工作,但当我尝试将其与ember simple auth一起使用时,我得到了一个错误: TypeError: Converting circular structure to JSON at JSON.stringify (<anonymous>) at Class.persist (local-storage.js:45) at Class.persist (adaptive.js:163) at Cl

我开始让torri和emberfire为登录页面工作,但当我尝试将其与ember simple auth一起使用时,我得到了一个错误:

TypeError: Converting circular structure to JSON
    at JSON.stringify (<anonymous>)
    at Class.persist (local-storage.js:45)
    at Class.persist (adaptive.js:163)
    at Class._callStoreAsync (internal-session.js:132)
    at Class._updateStore (internal-session.js:207)
    at Class._setup (internal-session.js:156)
    at internal-session.js:61
    at tryCatch (ember.debug.js:50180)
    at invokeCallback (ember.debug.js:50195)
    at publish (ember.debug.js:50163)

由Emberfire发送回的
data.authenticated
有效负载太复杂,具有循环引用。Ember Simple Auth将此有效负载存储到本地存储,以防止在刷新或打开其他选项卡上的应用程序时出现登录提示

现在看来对我有效的方法(我没有做太多测试)是扩展会话存储。YMMV

// app/session-stores/application.js

import AdaptiveStore from 'ember-simple-auth/session-stores/adaptive';

export default AdaptiveStore.extend({

  persist(data) {
    const a = data.authenticated;

    const subset = {
      authenticator: a.authenticator,
      email: a.email,
      provider: a.provider,
      refreshToken: a.refreshToken,
      uid: a.uid
    }

    return this._super({ authenticated: subset });
  }

});

由Emberfire发送回的
data.authenticated
有效负载太复杂,具有循环引用。Ember Simple Auth将此有效负载存储到本地存储,以防止在刷新或打开其他选项卡上的应用程序时出现登录提示

现在看来对我有效的方法(我没有做太多测试)是扩展会话存储。YMMV

// app/session-stores/application.js

import AdaptiveStore from 'ember-simple-auth/session-stores/adaptive';

export default AdaptiveStore.extend({

  persist(data) {
    const a = data.authenticated;

    const subset = {
      authenticator: a.authenticator,
      email: a.email,
      provider: a.provider,
      refreshToken: a.refreshToken,
      uid: a.uid
    }

    return this._super({ authenticated: subset });
  }

});

你知道,Firebase有自己的认证系统,已经使用了Tori。我不知道您的用例是什么,但我发现ember simple auth和Firebase是多余的。是的,我在第一次提交时firebase身份验证工作正常,但我想对我的模型使用ember simple auth DataAdapterMixin,对路由使用AuthenticatedRouteMixin。如果我不能修复它,我想我必须自己处理这个问题,没有混音,可能还需要编写更多的样板代码。你知道,Firebase有自己的认证系统,已经使用了Tori。我不知道您的用例是什么,但我发现ember simple auth和Firebase是多余的。是的,我在第一次提交时firebase身份验证工作正常,但我想对我的模型使用ember simple auth DataAdapterMixin,对路由使用AuthenticatedRouteMixin。如果我不能修复它,我想我必须自己处理它,而不使用mixin,并且可能需要编写更多的样板代码。