Facebook graph api fb访问令牌在ember应用程序中始终过期
我使用的是ember simple auth和ember cli facebook js sdk。我使用ember cli facebook sdk是因为我想随时获取用户照片,因为facebook只提供60分钟后过期的访问权限。因此我无法保存。ember-cli-facebook-sdk工作正常。但有时我的网络控制台中会出现错误Facebook graph api fb访问令牌在ember应用程序中始终过期,facebook-graph-api,ember.js,ember-cli,facebook-sdk-4.0,ember-addon,Facebook Graph Api,Ember.js,Ember Cli,Facebook Sdk 4.0,Ember Addon,我使用的是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
{"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)
})
}
我想这里发生的是,你的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捕获中的错误:
FB.api('/me/picture','Get',{'type':'large'}).then(function(response) {
currentStatte.set('userphoto', response.data.url);
}).catch(function(reason) {
...handle your error here...
});
我想这里发生的是,你的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捕获中的错误:
FB.api('/me/picture','Get',{'type':'large'}).then(function(response) {
currentStatte.set('userphoto', response.data.url);
}).catch(function(reason) {
...handle your error here...
});
@Hillboy我已经编辑了代码。@Hillboy我已经编辑了代码。但是对于登录,我正在使用ember simple auth Addon,当我检查登录状态时,如果失败并返回fb.login。它会为fb打开一个新的对话框吗permission@MarutiNandan如果用户已接受应用权限,则不会显示任何对话框(事实上,它会很快打开和关闭)但对于登录,我在检查loginStatus时使用ember simple auth Addon,如果失败并返回fb.login。它会为fb打开一个新对话框吗permission@MarutiNandan如果用户已接受应用权限,则不会显示任何对话框(实际上,它会很快打开和关闭)