2014-12-02 43 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