私のアプリにFacebookのログインを使用しています。私は正常にログインを完了することができますが、ページを更新するときsession.isAuthenticate
は未定義になります。鳥居を使っているときに、Emberでリフレッシュした後にセッションサービスが定義されない理由
セッションを維持するロジックは、鳥居アダプターのフェッチ方法の中にとどまると思います。以下は私の鳥居アダプターです。何が足りないのか教えてください。以下は
import Ember from 'ember';
import {createToken} from 'myapp-new/utils/myapp-utils';
//import User from 'myapp-new/user/model';
export default Ember.Object.extend({
store: Ember.inject.service(),
session: Ember.inject.service('session'),
fetch(){
let token = session.token;
if(Ember.isEmpty(token)){
throw new Error("No session found");
}
else{
return Ember.RSVP.resolve({token});
}
},
open: function(authentication){
let authorizationCode = authentication.authorizationCode;
let token = createToken();
let adapter = this;
return new Ember.RSVP.Promise(function(resolve, reject){
console.log(authentication);
Ember.$.ajax({
url: 'http://myapp.com/getUserInfoWuthAuthCode.php',
//url:'http://localhost:4200',
data: { 'code': authorizationCode,token:token},
success: Ember.run.bind(null, resolve),
error: Ember.run.bind(null, reject)
});
}).then(function(data){
let user = data.user[0];
return {
token:token,
user: user
};
});
}
});
UPDATE 私はので、唯一のルート内のセッションをフック任意のコンポーネントを使用していないよ、私のルート
import Ember from 'ember';
export default Ember.Route.extend({
session: Ember.inject.service('session'),
actions:{
signIn(){
console.log("Working");
this.get('session').open('google-oauth2').then(function(){
console.log("Login Worked");
}, function(error){
console.log('error', 'Could not sign you in: '+error.message);
});
}
},
setupController(controller, model){
controller.set('session', this.session);
}
});
のコードです。注意する 一つのことは私の鳥居・アダプターの方法をフェッチでは、すべての時に呼び出さ取得されていません(それはリフレッシュに呼び出されなければなりません、そうではありませんか?)
問題はセッションコードではありません(とにかく、訂正してくれてありがとう)。しかし、私のコンポーネント(hbsファイル){{session.isAuthenticated}}はリフレッシュ後に定義されていません。 –
少なくとも生成されたコントローラで 'controller'の中に' session'がありますか? –
自分のルートにセッションを挿入しましたが、ログイン{{session.isAuthenticated}}がtrueに評価された直後に、リフレッシュ後にはセッションが挿入されませんでした。それについて気付くべきことは、アダプタのフェッチメソッドが全く呼び出されないということです。私は何かが紛失している可能性があります –