Facebook access_token странные проблемы на сайте при запросе друзей fb - PullRequest
1 голос
/ 15 февраля 2012

У меня есть приложение, написанное на symfony 2 (и использующее пакет fosfacebook с пользовательским поставщиком из fosub).Я использую JS SDK и PHP SDK от Facebook в этом приложении.войти в мое приложение и серфинг вокруг возможно.У меня есть одна страница, где я показываю пользователям Facebook друзей.в моем бэкэнде я использую / me / friends для этого запроса.Допустим, я остаюсь около часа на этой странице, которая показывает друзей без какой-либо активности.если я обновлю страницу после этого часа, я получу сообщение:

An exception has been thrown during the rendering of a template ("An active access token must be used to query information about the current user.") in 

, что меня как-то смущает.я все еще могу посещать другие страницы моего сайта, где не выполняются прямые «запросы на Facebook».Если я var_dump на facebook access_token на других моих страницах, они выглядят по-другому, например, если я вошел в систему с помощью facebook в том же браузере и вошел в мою заявку через facebook, я получаю следующий access_token на странице, где я отображаюдруг пользователей: AAACbRz2shZAIBAFX66jLuQktdlzzIx52lnSvgZB5hiNNxvy0lPbKMcUsC1BHLTnaAllXI9WN7dRHfa5TOj4HmZBjdwgjP5In46d пользователь отображает *, в этом браузере есть еще одно сообщение: в этом браузере есть еще один браузер, и в этом браузере появляется сообщение, в котором есть еще один браузер.если я перехожу на другую страницу и var_dump access_token, я получаю это: string (48) "170732376699858 | 6c2b4d7ca20f8a607418845634356"

, поэтому просто страница, где отображаются друзья пользователей Facebook, не работает должным образом.

на сайте js я делаю следующее:

    function onFbInit() {  

  if (typeof(FB) != 'undefined' && FB != null ) {

        FB.Event.subscribe('auth.authResponseChange', function(response) {
            $.each(reponse, function(e) {
                alert(e);
                });
            });

      FB.Event.subscribe('auth.statusChange', function(response) {
          if (response.session || response.authResponse) {
              setTimeout(goLogIn, 500);
          } else {
              window.location = "{{ path('_security_logout_fb') }}";
          }
      });
  } else  {
      setTimeout(goLogIn, 500);
      }
     }

есть идеи, что я делаю не так?Есть ли способ через php sdk, чтобы проверить, является ли access_token действительным?Я прочитал документы, но почему-то я не нашел пути.

Я не использую автономный acces_token, потому что он устарел

Спасибо, Рамо

1 Ответ

1 голос
/ 15 февраля 2012

Это на самом деле звучит совершенно правильно.Поскольку вы не используете разрешение offline_access (и не имеете права), токены, которые вы предоставили Facebook для каждого пользователя, истекают через некоторое время, как вы описали.

У вас есть несколько вариантов обработкиэта проблема, как на стороне сервера, так и на стороне клиента.Но поскольку вы делаете запрос API на стороне сервера, вам необходимо сначала выяснить, является ли токен доступа, который вы собираетесь использовать, действительным, есть хороший официальный пост в блоге, который объясняет, как: http://developers.facebook.com/blog/post/500/

Какпочему вы получаете страницу с ошибкой только на этой странице, а не на других страницах вашего сайта, возможно, потому, что вы не пытаетесь перехватить исключение при выполнении запроса API api, который затем возвращает ошибку, но так как это единственное местоВы делаете этот запрос, это единственная неработающая страница.

...