Pregunta

Estoy escribiendo una aplicación de Facebook que es un simple juego de mesa que he implementado en javascript. Facebook sólo parece dejar javascript aplicaciones se ejecutan dentro de un iframe, así que estoy cargando la página utilizando <fb:iframe>. Sólo quiero ser capaz de decir el javascript ID del usuario para que pueda avisar al usuario si se trata de su turno o no, pero no puedo encontrar documentación sobre cómo acceder a los datos de Facebook desde dentro del fb: iframe. Probablemente me falta alguna conecpt básico como que no entiendo la API de Facebook muy bien.

¿Fue útil?

Solución

API de Facebook es muy difícil de seguir y la documentación es muy pobre. Tienes razón en el Javascript ... Javascript normal sólo funciona dentro de un iframe en Facebook, si no estás limitado a un subconjunto de Javascript llamada filtrada FBJS. Puede ignorar nada de FBJS en la documentación, y se centran en marcos flotantes.

Iframe carga

Lo primero que me gustaría mencionar es que una etiqueta <fb:iframe> realidad se representa con un montón de cosas en el atributo src. Así que si se pone una etiqueta como esta en su página de Facebook: <fb:iframe src="http://example.com/page?x=y">, lo que termina por convertirse en cuando se carga en el navegador de un usuario es de la misma familia:

<iframe src="http://example.com/page?x=y&fb_sig_in_iframe=1&fb_sig_locale=en_US&fb_sig_in_new_facebook=1&fb_sig_time=1246340245.3338&fb_sig_added=1&fb_sig_profile_update_time=1242155811&fb_sig_expires=1246345200&fb_sig_user=000000001&fb_sig_session_key=2.d13uVGvWVL4hVAXELgxkZw__.3600.1246345200-000000001&fb_sig_ss=mZtFjaexyuyQdGnUz1zhYTA__&fb_sig_api_key=46899e6f07cef023b7fda4fg2e21bc58&fb_sig_app_id=22209322289&fb_sig=bbc165ebc699b12345678960fd043033">

Facebook añade un montón de cosas a la src. El parámetro que le indica al usuario de Facebook id es fb_sig_user (que es 000000001 aquí). Estoy asumiendo que su aplicación está configurado como un "FBML aplicación", ya que es probable que no utilice un users.getLoggedInUser() etiqueta en un "marco flotante aplicación". No obstante, el método de representación es similar en ambos casos, y usted tiene un montón de cosas extra a su <=> documento en un "marco flotante aplicación" también.

Esto realmente sólo le pasa el ID de usuario de Facebook en la primera carga del marco flotante, sin embargo. Las operaciones subsiguientes dentro del marco flotante no tendrán acceso a la identificación del usuario a menos que pase a su alrededor de forma explícita.

Facebook Connect

Si desea interactuar con Facebook desde dentro del marco flotante, que es donde las bibliotecas Facebook Connect Javascript llega en mejores instrucciones sobre cómo configurar Facebook Connect es probablemente esta página wiki , pero aún así es un poco turbia. Facebook Connect se puede utilizar para ambos sitios externos por completo, o simplemente el contenido normal dentro de un iframe. Usted pertenece a esta última categoría, por lo que si usted sigue las instrucciones de ese enlace y utiliza la primera línea de código en el paso 2 (para el FeatureLoader), que debe estar bien.

Una vez que ha incluido el guión FeatureLoader.js y FB.init llamada, por lo general debe estar en funcionamiento con el FB Connect. Usted debe ser capaz de interactuar con el API a partir de entonces en adelante. El método <=> le dará el ID de usuario actual dentro del marco flotante a través de JavaScript.

Espero que ayude.

Otros consejos

Tenga en cuenta que a partir de marzo de 2011, FB se está moviendo a POST solicitudes para cargar iframes. Se envía una acción de formulario con method = "post" y target = "iframe_canvas", además de un tipo de entrada = "oculta" con un "signed_request"

cna utilizar la API de Facebook para obtener el ID de usuario llamando

Users.getLoggedInUser

Se puede acceder a ese valor, a continuación, utilizar el eco () para añadir que a su HTML como una variable de JavaScript, lo que hará que esté disponible para su código Javascript.

Trate Env.user, se ha iniciado la sesión en el ID de usuario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top