2014-12-02 42 views
0

我创建了一个干净的烬应用程序,安装simple-auth并实现了Facebook的自定义身份验证器。Ember简单的认证会话内容丢失后页面重新加载

https://github.com/prule/ember-auth-spike

我可以看到我成功地得到了会议的FB和其认沽访问令牌(通过检查烬铬扩展容器会显示我的会话进行身份验证和访问令牌是可见)。

但是当我在浏览器中重新加载页面时,会话状态会丢失。这是预期的行为?我在自定义身份验证器中做错了什么?验证码是直接复制和粘贴(加上一些console.logs)从https://github.com/simplabs/ember-simple-auth/blob/master/examples/7-multiple-external-providers.html

谢谢,我感谢任何帮助。

import Ember from 'ember'; 
import Base from 'simple-auth/authenticators/base'; 

export default Base.extend({ 
    restore: function (data) { 
    return new Ember.RSVP.Promise(function (resolve, reject) { 
     console.log('restore'); 
     if (!Ember.isEmpty(properties.accessToken)) { 
     console.log('found access token '+properties.accessToken); 
     resolve(properties); 
     } 
     else { 
     console.log('no token found'); 
     reject(); 
     } 
    }); 
    }, 
    authenticate: function (options) { 
    return new Ember.RSVP.Promise(function (resolve, reject) { 
     console.log('1'); 
     FB.getLoginStatus(function (fbResponse) { 
     console.log('2'); 
     console.log(fbResponse); 

     if (fbResponse.status === 'connected') { 
      Ember.run(function() { 
      console.log(fbResponse.authResponse.accessToken); 

      resolve({accessToken: fbResponse.authResponse.accessToken}); 
      }); 
     } 
     else if (fbResponse.status === 'not_authorized') { 
      reject(); 
     } 
     else { 
      FB.login(function (fbResponse) { 
      if (fbResponse.authResponse) { 
       Ember.run(function() { 
       console.log(fbResponse.authResponse.accessToken); 

       resolve({accessToken: fbResponse.authResponse.accessToken}); 
       }); 
      } 
      else { 
       reject(); 
      } 
      }); 
     } 
     }); 
    }); 
    }, 
    invalidate: function (data) { 
    return new Ember.RSVP.Promise(function (resolve, reject) { 
     FB.logout(function (response) { 
     Ember.run(resolve); 
     }); 
    }); 
    } 
}); 

回答

0

的参数传递给认证的restore方法被调用data但你检查properties.accessToken。这实际上应该会引起错误,因为properties在那里没有定义。

+0

谢谢,这似乎解决了它,虽然我不知道为什么没有错误。不幸的是,我并没有在我的原始项目上犯过同样的错误,所以在那里出现了一个不同的问题 - 我试图通过彻底删除并将代码复制到那里来消除。现在我已经有了这样的经验。无论如何,感谢您的帮助和耐心。 – prule 2014-12-03 21:31:55