我正在为我的应用程序使用 facebook 登录。我能够成功完成登录,但是当我刷新页面时,页面session.isAuthenticate
变得未定义。
我认为保持会话的逻辑保留在 torii-adapter 的 fetch 方法中。下面是我的 torii 适配器,请告诉我缺少什么。
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
};
});
}
});
更新 以下是我的路线代码
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);
}
});
我没有使用任何组件,因此仅在路由内挂钩会话。需要注意的一件事是我的 torii-adapter 的 fetch 方法根本没有被调用(它应该在刷新时调用,不是吗?)