Я пытался искать помощь на форумах FB для этого, но они действительно не сильно помогают там.
Мое приложение настроено как приложение iframe, но такое же поведение происходит, если приложение настроено как приложение fbml и страница ниже загружается через fb: iframe. Такое же поведение существует независимо от того, какие дополнительные параметры используются. Такое же поведение существует с простым FB.init (см. Ниже) или с асинхронным вызовом.
URL моего сайта правильно установлен на http://foo.mysitenamehere.foo/, где находится этот файл.
Это моего приложения прямо сейчас:
Код:
<html>
<head>
<script src="http://connect.facebook.net/en_US/all.js"></script>
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
FB.init({
appId : '127717367239744',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
alert("FB: " + FB + " FB.getSession(): " + FB.getSession());
FB.getLoginStatus(function(response) {
if (response.session) {
alert("1");
} else {
alert("2");
}
});
</script>
</body>
</html>
Вот что происходит:
ПОВЕДЕНИЕ В РАБОЧИХ БРАУЗЕРАХ (Firefox, Chrome, Safari PC и Mac, некоторые пользователи IE)
Первое предупреждение сеанса и предупреждение «1» появляются во всех этих браузерах. Если я проверю запросы (используя firebug или fiddler2), в каждом работающем браузере, включая IE, когда он работает, запрос к login_status.php - это длинный запрос GET.
ПОВЕДЕНИЕ В СЛОМАННОМ ИЕ
Первое оповещение о сеансе показывает, что сеанс имеет значение null / undefined. Глядя на запросы, login_status.php - это POST, а не GET-запрос. Этот POST-запрос обычно имеет длину более 4000 символов. Этот запрос исходит от all.js.
login_status.php возвращает это:
Код:
HTTP/1.1 200 OK
Content-Type: text/plain;charset=utf-8
X-Cnection: close
Date: Fri, 27 Aug 2010 20:50:40 GMT
Content-Length: 22
Invalid Application ID
Очевидно, что мой идентификатор приложения действителен (см. 4 других работающих браузера), скорее запрос POST искажен или не принят login_status.php, поэтому ответ завершается ошибкой и приложение не работает в IE.
Это очень тревожный вопрос. Мое приложение не может быть сокращено до более простого примера, и все же оно не работает. Каждое приложение холст iframe демонстрирует такое поведение в IE? Если нет, то что отличается от того, что я делаю?
Заранее спасибо за любые советы.