Как я могу получить новый SDK для Javascript для работы в IE8?

Я сварил свою страницу до самой простой вещи, и она все еще не работает в IE8.

Здесь вся html-страница:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">
<head></head>
<body>
<div id="fb-root"></div>
<fb:login-button></fb:login-button>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({appId: 'd663755ef4dd07c246e047ea97b44d6a', status: true, cookie: true, xfbml: true});
  FB.Event.subscribe('auth.sessionChange', function(response) {
    alert(JSON.stringify(response));
  });
  FB.getLoginStatus(function (response) { alert(JSON.stringify(response)); });
</script>
</body>
</html>

В firefox, safari и chrome (на Mac) я получаю поведение, которое я ожидаю: если я не зашел в Facebook, я получаю диалог загрузки страницы с пустым сеансом. Когда я нажимаю кнопку "Вход" и регистрируюсь, я получаю второе диалоговое окно с сеансом. Если я зарегистрирован в Facebook, я получаю два диалога с сеансами: один из вызова getLoginStatus и другой из события.

В IE8 я не получаю никаких диалогов при загрузке страницы. Обратный вызов getLoginStatus не вызывается. Когда я нажимаю кнопку "Вход", я получаю диалог, но в нем очень странная ошибка:

Недопустимый аргумент

Междоменный домен Facebook Connect URL получателя (http://static.ak.fbcdn.net/connect/xd_proxy.php#?=&cb=f3e91da434653f2&origin=http%3A%2F%2Fmysiteurl.com%2Ff210cba91f2a6d4&relation=opener&transport=flash&frame=f27aa957225164&result=xxRESULTTOKENxx) должен иметь приложение Connect URL (http://mysiteurl.com/) как префикс. Вы можете настроить Connect URL в настройках приложения Редактор.

Я пробовал URL-адрес Connect выше, но это правильно.

В диалоговом окне есть поля имени пользователя и пароля. Если я войду в систему, диалоговое окно будет перенаправлено на мой URL-адрес Connect, но нет fb файла cookie, поэтому, конечно, ничего не работает.

Что я здесь делаю неправильно?

Обновление (2010 сент. 10):

Эта проблема не универсальна. В моем URL-адресе сайта есть номер порта, потому что это мой тестовый сайт: http://mysiteurl.com:12345. Без порта число, т.е. кажется, все в порядке. С номером порта он продолжает как это было раньше. Однако сообщение об ошибке теперь более кратким:

Недопустимый аргумент

Указанный URL-адрес не разрешен конфигурацией приложения

Кроме того, эта проблема специфична для IE (фактически, я подозреваю, что она специфична для транспорта XD Flash, но я не знаю, как это подтвердить). Он отлично работает на всех других платформах/браузерах, которые я пробовал.

Я все еще не ближе к этой работе с URL-адресом с номером порта.

Ответ 2

Они ДЕЙСТВИТЕЛЬНО должны опубликовать это. Но при работе на вашем локальном сервере на случайном порту, например 8080, вы должны использовать 127.0.0.1 и НЕ localhost, иначе он не будет работать в IE. Также убедитесь, что ваш URL-адрес подключения в настройках приложения facebook установлен на 127.0.0.1

Ответ 3

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

В любое время, когда я выполнял команды под функцией FB.Event.Subscribe, IE8 выполнял бы всю мою команду до того, как событие триггера действительно изменилось (например, при подписке на "auth.login" функция cb выполнила бы перед пользователем набрал его имя пользователя и пароль). Конечно, мои функции обратного вызова зависели от данных, необходимых после входа пользователя.

Я тестирую IE, Firefox и Chrome, а IE - единственный браузер, который дает мне проблемы. У меня тоже есть тестовый сайт, работающий под портом, отличным от 80, но я еще не пробовал определенную диагностику, чтобы точно определить проблему, хотя я довольно уверен, что это связано с этим.

Надеюсь, это поможет любому, у кого есть подобные проблемы, по крайней мере, знать о других возможных проблемах. Надеемся найти ответ или обходное решение в ближайшее время!

Ответ 4

Если ваша проблема возникает только при запуске вашего сайта на порту, отличном от порта 80, то у вас есть свой ответ: запустите его только на порту 80. Варианты этого вопроса/проблемы возникают снова и снова при разработке приложений Facebook, где люди запустите свой тестовый или dev-сайт на порте, отличном от порта 80. Запустите его и запустите на порт 80!

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

Есть ли у вас законная причина, по которой вы должны запускать номер альтернативного порта? На самом деле совсем не сложно запускать столько сайтов, сколько вы хотите на порту 80.

Ответ 5

У меня была такая же проблема с IE. Прекрасно работает в Firefox и Chrome. Но потом я понял это.

В настройках вашего приложения Facebook на вкладке "Веб-сайт" я уверен, что у вас есть "URL-адрес сайта", но теперь вам нужно заполнить поле "Domain Domain" ниже, и оно будет работать для IE.

Я не знаю, ПОЧЕМУ без этого поля он все еще работает для браузеров, отличных от IE, не имеет никакого смысла в конце Facebook.