我正在使用ember-simple-auth和ember-cli-facebook-js-sdk。我正在使用ember-cli-facebook-sdk,因为我想随时获取用户照片,因为facebook只提供过期的访问权限在60分钟内。所以我也无法保存.Ember-cli-facebook-sdk工作正常。但有时我的网络控制台出错了。
{"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthException"}
我无法想到为什么会出现这个错误。我有一个初始化程序,它有facebook id和api版本。现在我在我的控制器,组件和其他人中使用Fb.api和其他人。但它有时会失败。请告诉我哪里出错了。谢谢。
初始化/ 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)
})
}
答案 0 :(得分:0)
我认为这里发生的事情是,你的Facebook会话到期了。在这种情况下,您需要处理错误并进行管理。例如,您可以检查有效会话,如果会话已过期,则需要新令牌,然后执行您的请求:
FB.api('/me/picture','Get',{'type':'large'}).then(function(response) {
currentStatte.set('userphoto', response.data.url);
}).catch(function(reason) {
...handle your error here...
});
另一种可能性是处理FB.api的捕获错误:
/**
* @class
*/
Ext.define("MyApp.config.Config", {
alternateClassName: [
'MyApp.config'
],
singleton: true,
constant: {
// ... whatever constant you need to put here
},
constructor: function() {
var constant = this.constant;
//
// here, if you need to process some stuff
// for example calculate some constant
// which depend of other constant
//
return constant;
}
});