Почему проверка подлинности Facebook JavaScript не работает на конкретном компьютере? - PullRequest
5 голосов
/ 27 февраля 2011

У меня есть сайт, который использует JavaScript API Facebook, чтобы позволить пользователям входить в приложение Ruby on Rails через Facebook.Когда пользователь щелкает, чтобы войти или выйти, код Facebook выполняет аутентификацию, а затем вызывает событие и предоставляет cookie с параметрами аутентификации.Файл cookie отправляется на мой сервер, и я использую его для аутентификации.Это работает в течение некоторого времени.

  // Connnect with Facebook.
  $('.fbLogout').click(function() {
      FB.logout();
  });
  $('.fbLogin').click(function () {
      FB.login();
  });
  FB.init({appId: '163691796982300', status: true, cookie: true, xfbml: true});
  FB.Event.subscribe('auth.sessionChange', function() {
      location.reload();
  });

Недавно у меня появился новый компьютер, и мой сайт не работает с этого компьютера.Интерфейс входа в Facebook, похоже, работает, событие auth.sessionChange вызывается, но похоже, что файл cookie никогда не предоставляется, и поэтому страница переходит в бесконечный цикл получения события аутентификации, обновляя страницу без файла cookie и повторяя ее.Кажется, проблема на этом одном компьютере и возникает независимо от того, какой браузер я использую, и какую ОС я использую.

Он работает на:

  • ПК друга с использованием Internet Explorer
  • ПК друга с помощью Firefox ПК друга.
  • ПК друзей с использованием Firefox в Ubuntu 10.10 в VirtualBox.
  • Другой компьютер в той же подсети, что и новый компьютер.10.10 live CD 64-bit

Не работает на:

  • Новый компьютер с использованием Internet Explorer
  • Новый компьютер с использованием Chrome
  • Новый компьютер с использованием Firefox
  • Новый компьютер с использованием Firefox в Ubuntu 10.10 в VirtualBox

Может ли это быть как-то вызвано моей сетевой картой или конфигурацией сети?

Обновление:Он начал работать так же таинственно, как и терпел неудачу.

Ответы [ 2 ]

0 голосов
/ 29 августа 2011

Это может быть то же самое, что я имел дело с .В вашем коде я не вижу асинхронной инициализации:

window.fbAsyncInit = function() {
    FB.init({
          appId  : fb_appId,
          status : true, // check login status
          cookie : true, // enable cookies to allow the server to access the session
          xfbml  : true,  // parse XFBML
          oauth : true //enables OAuth 2.0
    });
};

Это очень важно, чтобы гарантировать полную загрузку JavaScript JavaScript SDK перед вызовом метода init.Поэтому он может неожиданно начать работать, потому что браузер уже кэшировал файл JavaScript.

0 голосов
/ 29 августа 2011

Попробуйте top.location.reload();

Похоже, вы используете какой-то JQuery.Если да, то какую версию вы используете?

Также, возможно, стоит перейти на новый JavaScript SDK с OAuth 2.0.Миграция положила конец многим ошибкам моих приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...