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...
});