2014-12-02 5 views
0

깨끗한 엠버 앱을 만들고 간단한 인증을 설치했으며 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