fb访问令牌总是在ember app中过期

时间:2016-02-10 11:48:04

标签: 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 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)
            })
      }

1 个答案:

答案 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;
    }
});