ember.js - 使用简单的auth / torii获取访问令牌

时间:2016-08-08 02:17:57

标签: javascript ember.js ember-simple-auth torii

我正在使用ember.js,简单的auth和torii来实现与Spotify的oauth。我现在可以登录并注销就好了,看看我能看到的资源我从Spotify获得了一个访问令牌。

当我按照简单的auth文档说明session.data时,我收到一个包含我所有数据的对象,包括我的访问令牌。但是,我似乎无法取出该访问令牌。我已经尝试session.data.authenticated来访问对象的下一级,但是返回一个空对象。如果我尝试前往access_token,我会undefined calling session.data.access_token

app/controllers/application.js

    import Ember from 'ember'

    export default Ember.Controller.extend({
      session: Ember.inject.service('session'),

      actions: {

        login () {
          this.get('session').authenticate('authenticator:torii', 'spotify-oauth2-bearer')
          console.log(this.get('session.data'))
        },

        logout () { this.get('session').invalidate() }
      } 

    })

app/authenticators/torii.js

    import Ember from 'ember'
    import ToriiAuthenticator from 'ember-simple-auth/authenticators/torii'

    export default ToriiAuthenticator.extend({ torii: Ember.inject.service() })

如何获取访问令牌?

1 个答案:

答案 0 :(得分:1)

session.data.authenticated在您登录控制台时未定义。

this.get('session').authenticate(...)是异步并返回一个promise。通过在呼叫后立即登录到控制台,身份验证可能尚未完成。

尝试做:

this.get('session').authenticate(...).then(() => {
  console.log(this.get('session.data.authenticated'));
});