Facebook: Javascript API иногда не загружается - PullRequest
2 голосов
/ 24 мая 2011

Один раз в несколько раз вызовы API Facebook не завершаются (или, возможно, даже не совершаются). Например, я подсчитываю количество друзей пользователя, которые также используют мое приложение, но это, кажется, никогда не рассчитывается. Я пытался исследовать эту проблему, но в консоли Chrome нет ошибок. Вы когда-нибудь сталкивались с таким поведением и знаете, как это исправить?

EDIT

Вот некоторые подробности, которые я получаю:

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 Ответ

1 голос
/ 25 мая 2011

Позвольте мне сделать это.

Я думаю, что проблема в том, что вы вышли из системы и вошли в систему под другим пользователем. Может возникнуть проблема, потому что Facebook не обнаруживает, что другой пользователь вышел из системы, и считает, что это тот же человек. Это может решить эту проблему:

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

Запустите его, чтобы убедиться, что пользователь вышел из системы, затем попытайтесь оттуда перейти

Надеюсь, это немного поможет.

Вот метод выхода из Facebook

Вы также можете посмотреть на этот предыдущий вопрос SO об обновлении сеанса (хотя он на PHP и я не знаю JS-эквивалент)

...