Aplicación Facebook Connect dentro de iframe que no funciona en IE7

votos
5

Estoy construyendo una aplicación de Facebook Connect que se ejecuta dentro de un gadget de Google. Ser un gadget significa que la aplicación se ejecuta dentro de un iframe. Dentro de la aplicación, hay un formulario que permite a los usuarios registrados publicar comentarios. La presentación se realiza utilizando AJAX, pero obtengo los mismos resultados con una forma normal. El problema es que necesito obtener la identificación de Facebook del usuario. En Firefox, funciona bien, pero en Internet Explorer 7, aparece el siguiente error:

 'A session key is required for calling this method'

Creo que esto se debe a la forma en que IE maneja las cookies de terceros, porque si voy a Opciones de Internet / Privacidad / Avanzado, y selecciono Anular el manejo automático de cookies y acepto todas las cookies, funciona bien. No puedo pasar la identificación de Facebook del javascript, porque cualquiera podría manipularlo.

EDITAR: si abro el contenido del iframe directamente, la aplicación funciona bien. El problema se debe realmente al modelo de seguridad IFRAME e IE.

¿Qué estoy haciendo algo mal? ¿Cómo puedo solucionar este problema?

Publicado el 16/02/2009 a las 19:10
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
1

Encontré una solución alternativa que funciona, aunque es un poco fea: cuando el usuario hace clic en el botón "iniciar sesión", se abre una ventana emergente que proviene de mi propio sitio y que contiene el botón de inicio de sesión de Facebook Connect. Después de que el usuario inicia sesión, cierro la ventana emergente y vuelvo a cargar el iframe.

Esto es realmente feo porque abre dos ventanas emergentes, pero al menos funciona. Detectaré si las cookies están habilitadas usando JavaScript y si están habilitadas, omitiré la primera ventana emergente.

Todavía estoy abierto a mejores soluciones ...


Editar : Facebook ahora usa una ventana emergente "falsa" dentro de mi ventana emergente, en lugar de abrir otra ventana. Ahora solo tengo una ventana emergente que está bien para mí.

Respondida el 16/02/2009 a las 21:17
fuente por usuario

votos
7

¿Has intentado agregar una política P3P?

Si la configuración de respuesta de la cookie tiene una política compacta, IE lo usará para determinar si permite o no la cookie de terceros.

Respondida el 17/02/2009 a las 04:01
fuente por usuario

votos
3

Resolví el mismo problema modificando la forma en que comprobaba si el usuario había iniciado sesión en la página PHP después de un inicio de sesión con conexión FB.

Entonces, inician sesión en FB Connect con IE7. Las siguientes y posteriores cargas de página donde necesito verificar que efectivamente están registradas en FaceBook utilicé el siguiente código (nótese que $ facebook-> require_login () y otras funciones no funcionaron - devolvieron null solo en IE 7):

// Validate from Facebook that session is valid and user is logged in. require_once 'facebook/facebook.php'; $facebook = new Facebook(YourAppsAPIKeyPublic, YourAppsAPIKeySecret); $facebook->api_client->session_key = $this->userAPISessionKey; $fb_user_id = $facebook->api_client->users_getLoggedInUser();

El $ fb_user_id ahora debería tener un ID de usuario de FaceBook válido.

En cuanto a la política de privacidad y facebook connect + IE 7:

Aunque esto no funcionó para mí, parece funcionar para otros. en HTAccess:

Header append P3P "CP=\"HONK\""

o en archivos PHP:

header('P3P: CP="CAO PSA OUR"'); o header('P3P: CP="HONK"');

referencia: http://forum.developers.facebook.com/viewtopic.php?id=28636

ASP.NET:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");
}
Respondida el 30/06/2009 a las 19:20
fuente por usuario

votos
0

es posible que desee ver a este hilo también, que se crea en virtud de plataforma de desarrollo facebook

http://forum.developers.facebook.com/viewtopic.php?id=452

Respondida el 22/03/2010 a las 12:38
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more