fb 访问令牌在 ember 应用程序中总是过期
The fb access token always get expired in ember app
我正在使用 ember-simple-auth 和 ember-cli-facebook-js-sdk.I 我正在使用 ember-cli-facebook-sdk 因为我想随时获取用户照片,因为 facebook 只提供在 60 mins.So 后到期的访问权限 mins.So 我无法保存 also.Ember-cli-facebook-sdk 正在工作 fine.But 有时我会我的网络控制台出错。
{"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthException"}
我想不通为什么这个错误是 coming.I 有一个初始化程序,它有 facebook id 和 api version.And 现在我正在使用 Fb.api 和其他人我的控制器、组件和 other.But 它失败了 sometimes.Please 提前 wrong.Thanks 回答我要去的地方。
initializer/fb.js
import FB from 'ember-cli-facebook-js-sdk/fb';
export default {
name: 'fb',
initialize: function() {
return FB.init({
appId: '1234567',
version: 'v2.3',
xfbml: true
});
}
};
controller.js
usrphoto:Ember.computed('model',function(){
var currentState = this;
FB.api('/me/picture','Get',{'type':'large'}).then(function(response) {
currentState.set('usrphoto', response.data.url)
})
}
我认为这里发生的情况是,您的 Facebook 会话已过期。在这种情况下,您需要处理错误并对其进行管理。例如,您可以检查有效会话,如果会话已过期,则需要一个新令牌,然后执行您的请求:
FB.getLoginStatus().then(function(response) {
if (response.status === 'connected') {
return Ember.RSVP.resolve();
} else {
return FB.login('email,user_photos'); //set your scope as needed here
}
}).then(function() {
return FB.api('/me/picture','Get',{'type':'large'});
}).then(function(response) {
currentState.set('usrphoto', response.data.url);
});
另一种可能性是处理 FB.api:
的 catch 中的错误
FB.api('/me/picture','Get',{'type':'large'}).then(function(response) {
currentStatte.set('userphoto', response.data.url);
}).catch(function(reason) {
...handle your error here...
});
我正在使用 ember-simple-auth 和 ember-cli-facebook-js-sdk.I 我正在使用 ember-cli-facebook-sdk 因为我想随时获取用户照片,因为 facebook 只提供在 60 mins.So 后到期的访问权限 mins.So 我无法保存 also.Ember-cli-facebook-sdk 正在工作 fine.But 有时我会我的网络控制台出错。
{"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthException"}
我想不通为什么这个错误是 coming.I 有一个初始化程序,它有 facebook id 和 api version.And 现在我正在使用 Fb.api 和其他人我的控制器、组件和 other.But 它失败了 sometimes.Please 提前 wrong.Thanks 回答我要去的地方。
initializer/fb.js
import FB from 'ember-cli-facebook-js-sdk/fb';
export default {
name: 'fb',
initialize: function() {
return FB.init({
appId: '1234567',
version: 'v2.3',
xfbml: true
});
}
};
controller.js
usrphoto:Ember.computed('model',function(){
var currentState = this;
FB.api('/me/picture','Get',{'type':'large'}).then(function(response) {
currentState.set('usrphoto', response.data.url)
})
}
我认为这里发生的情况是,您的 Facebook 会话已过期。在这种情况下,您需要处理错误并对其进行管理。例如,您可以检查有效会话,如果会话已过期,则需要一个新令牌,然后执行您的请求:
FB.getLoginStatus().then(function(response) {
if (response.status === 'connected') {
return Ember.RSVP.resolve();
} else {
return FB.login('email,user_photos'); //set your scope as needed here
}
}).then(function() {
return FB.api('/me/picture','Get',{'type':'large'});
}).then(function(response) {
currentState.set('usrphoto', response.data.url);
});
另一种可能性是处理 FB.api:
的 catch 中的错误FB.api('/me/picture','Get',{'type':'large'}).then(function(response) {
currentStatte.set('userphoto', response.data.url);
}).catch(function(reason) {
...handle your error here...
});