Я боролся с проблемами с помощью Facebook Connect на IE8, и я зашел в тупик, казалось бы:
У нас есть игра на Facebook (Canvas iFrame), о которой сообщалось о проблемах при использовании IE8. Мы точно следовали инструкциям на странице разработчика FB.init , но ничего не получили.
Мы попытались использовать исправление channelUrl и различные виды исправлений, как указано здесь .
Наши заголовки ответа отправляют заголовок P3P:
P3P CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Мы также протестировали асинхронную и синхронизированную версии этой интеграции, но не дали никаких различий в результатах.
Несмотря на все наши усилия, в IE8 FB.getSession () всегда возвращает неопределенное значение. В сообщении об ошибке Facebook , которое они исправили как ошибку, было рассмотрено много информации, которую я рассмотрел, хотя, к сожалению, она не увенчалась успехом, несмотря на постоянные сообщения об этой проблеме от пользователей в цепочке спустя долгое время. они посчитали это решенным.
В последней попытке рва я перехожу к этому и начну с здравого смысла тестового приложения FB, в котором нет ничего, кроме примера JS FB.init, добавленного с некоторыми записями консоли, чтобы показать, что FB.getSession есть UID.
Если вы отвечаете на это, я могу попросить вас проверить это по IE8 и посмотреть на консоль, которая при успешной загрузке сеанса FB будет написать
FB: [object Object] FB.getSession().uid: [your fb id]
http://apps.facebook.com/fb-js-issue
Код там следующий:
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId: 'appId',
status: true,
xfbml: true,
cookie: true,
channelUrl: "http://ourserver.com/channelUrl.htm"
});
FB.Canvas.setAutoResize();
console.log("Running FB test");
setTimeout(function() {
console.log("FB: " + FB + " FB.getSession().uid: " + FB.getSession().uid);
}, 5000);
};
(function () {
var e = document.createElement('script');
e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
В общем, это примерное приложение работает нормально, хотя в редких случаях даже с этим возникают проблемы.
Наши настоящие приложения (которые используют тот же метод FB.init) постоянно испытывают неопределенные проблемы FB.getSession в IE, поэтому не могут загрузить
http://apps.facebook.com/party-on
ОБНОВЛЕНИЕ : мы определили, что проблема более серьезно влияет на IE8 в Windows XP или Vista - IE8 в Windows 7 кажется менее проблематичным (хотя и не на 100%)
Как пройти через это?
Итак ... учитывая, что проблема кажется довольно распространенной, и нет ясного решения, если не считать какой-то серьезной магии, которая еще не обсуждалась публично и которая, наконец, исправит эту проблему, было бы поучительно выделить другие возможные способы интегрировать с FB.connect, отличным от того, который они показывают
Причина, по которой я упоминаю об этом, заключается в том, что когда вы смотрите на то, как CityVille и FarmVille осуществляют интеграцию с FB, это не имеет ничего общего с тем, что сами авторы FB пишут как документы для разработчиков. Хм, интересно
На этом этапе будут приветствоваться любые свежие идеи и различные ракурсы !!