He reducido mi página a lo más simple posible, y todavía no funciona en IE8.¿Cómo puedo obtener el nuevo Javascript SDK de Facebook para trabajar en IE8?
Aquí está toda la página 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>
en Firefox, Safari y Chrome (en un Mac), consigo el comportamiento espero: si no estoy conectado a Facebook, aparece un diálogo en la carga de la página con una sesión vacía. Cuando hago clic en el botón Iniciar sesión e ingreso, obtengo un segundo diálogo con una sesión. Si estoy conectado a Facebook, obtengo dos cuadros de diálogo con sesiones: uno de la llamada getLoginStatus y otro del evento.
En IE8, no obtengo ningún cuadro de diálogo cuando cargo la página. La devolución de llamada getLoginStatus no se invoca. Cuando hago clic en el botón Iniciar sesión, aparece un cuadro de diálogo, pero tiene un muy extraño error en ella:
Argumento no válido
La cruz-dominio URL receptor Facebook Connect (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) debe tener la aplicación Connect URL (http://mysiteurl.com/) como un prefijo . Puede configurar la URL de Connect en el Editor de configuraciones de aplicaciones .
He desinfectado la URL de Connect anterior, pero es correcta.
El cuadro de diálogo tiene campos de nombre de usuario/contraseña. Si inicio sesión, el cuadro de diálogo se redirecciona a mi URL de conexión, pero no hay ninguna cookie fb, por lo que, por supuesto, nada funciona.
¿Qué estoy haciendo mal aquí?
actualización (2010 10 de septiembre):
Este problema no es universal. La URL de mi sitio tiene un número de puerto, porque es mi sitio de prueba: http://mysiteurl.com:12345. Sin un número de puerto , ie8 parece estar bien. Con el número de puerto, continúa fallando como lo hizo antes. Sin embargo, el mensaje de error es ahora más concisa:
Argumento no válido
URL dado no está permitido por la configuración de la aplicación
Además, este problema es específico de IE (en realidad, sospecho es específico para el transporte flash XD, pero no sé cómo confirmarlo). Funciona bien en cualquier otro par de plataforma/navegador que he probado.
Todavía no estoy más cerca de hacer que esto funcione con una url con un número de puerto.
Si olfatea el tráfico, ¿puede ver alguna diferencia? ¿Y en qué etapa aparecen? –
Buena pregunta. Las diferencias son bastante grandes. Facebook en IE aparentemente usa flash para proporcionar un canal de comunicaciones, lo que no es cierto para los otros navegadores que analicé de cerca. Algo en el mecanismo de flash aparentemente no funciona bien. – archbishop
Cuando todas sus sospechas apuntan al hecho de que está tratando de usar un puerto que no sea 80, ¿por qué no probarlo en el puerto 80? Use un subdominio como test.yoursite.com vinculado al puerto 80 –