Facebook:Javascript API有时无法加载

时间:2011-05-24 18:57:16

标签: facebook facebook-javascript-sdk

每隔几次对Facebook API的调用都没有完成(或者甚至没有完成)。例如,我正在计算用户朋友的数量,也使用我的应用程序,但这似乎从未计算过。我尝试调查此问题,但Chrome控制台中没有错误。你有没有遇到过这样的行为并且知道如何修复它?

修改

以下是一些细节,我得到:

error_code 190
error_msg Error validating access token: The session is invalid because the user logged out or because auth.expireSession was invoked

重点是我以一个用户身份登出,然后以另一个用户身份登录。为什么然后Facebook将其视为已注销用户?此外,如果我刷新页面,一切正常。

EDIT2

这是一些代码片段:

function facebookInit(config) {
  Config = config;

  FB.init({
    appId: Config.appId,
    xfbml: true,
    status: true,
    cookie: true,
    channelUrl:
      window.location.protocol + '//' + window.location.host + '/channel.html'
  });
  FB.Event.subscribe('auth.sessionChange', handleSessionChange);
  FB.Canvas.setSize();

  // ensure we're always running on apps.facebook.com
  if (window == top) { goHome(); }
}


window.fbAsyncInit = function() { 
    facebookInit({{ js_conf|safe }}) 
    afterSDK()  
};

问题出现在这里:

var query = "SELECT '' " +
        "FROM user " +
        "WHERE is_app_user = \"1\" AND " +
              "uid IN (SELECT uid2 " +
                      "FROM friend WHERE uid1 = {{ user.user_id }})"
FB.api({'method': 'fql.query', 'query': query}, 
       function(response){

此代码在afterSDK()函数内部调用。响应可能会带来错误,而不是使用应用程序的朋友数量。

1 个答案:

答案 0 :(得分:1)

让我试一试。

我认为问题在于您登出用户并登录另一个用户。可能存在问题,因为Facebook未检测到其他用户已注销,并认为其是同一个人。这可能会解决这个问题:

FB.logout(function(response) {
  // user is now logged out
});

运行它以确保用户已注销,然后尝试从那里移动

希望这会有所帮助。

Here is the facebook logout method

您还可以查看有关刷新会话的at this previous SO question(虽然它在PHP中,我不知道JS等价物)