2009-08-09 12 views
6

Estoy trabajando en escribir una pequeña aplicación de Facebook solo por diversión y aprendizaje. Desafortunadamente, la documentación del desarrollador de Facebook, la wiki y las muestras dejan mucho que desear.¿Se puede usar FBML en una aplicación iFrame de Facebook?

Si mi aplicación es una aplicación iFrame (PHP), ¿puedo usar FBML dentro de la página o necesito usar XFBML? Si necesito usar XFBML, ¿hay algún repositorio de fragmentos en algún lugar que pueda ver?

Estoy buscando agregar un cuadro selector de amigos. Por ejemplo, bienvenido a la aplicación, elija un objeto y envíelo a 20 amigos.

Pensarías que un selector de amigos sería un componente estándar para las aplicaciones de Facebook, pero aparentemente no.

Puedo usar FBQL y CSS para definir el mío, pero ¿no serían buenos los estándares y la coherencia?

¿Existe un tutorial de desarrolladores de aplicaciones de Facebook definitivo, desde cero, fácil de seguir que cubra las etiquetas FBML, las etiquetas XFBML y qué va con ejemplos?

Respuesta

8

Creo que en cada respuesta que hago a una pregunta de Facebook, casi menciono que "la documentación de Facebook apesta, así que no te sientas mal si no puedes encontrar algo".

La respuesta es sí, definitivamente puede usar FBML en una aplicación IFrame. Lo hago rutinariamente Facebook está difuminando las líneas entre las aplicaciones IFrame y FBML con XFBML, lo cual es genial. Básicamente, XFBML es solo FBML normal, excepto que se analiza y se procesa a través de las bibliotecas JavaScript de Facebook Connect. Debido a esto, se ve un poco de retraso antes de que se represente un control FBML, pero generalmente esto no es un gran problema.

Le daré un ejemplo de cómo cargar un selector de amigos directamente desde una de mis aplicaciones de IFrame. Verá que está rodeado por las etiquetas fb:serverfbml, que necesita para procesar varias de las etiquetas FBML más complicadas. Los elementos FBML que no necesitan necesitan una etiqueta fb: serverfbml a su alrededor se enumeran en el XFBML wiki page.

De todos modos, algo de código:

<fb:serverfbml style="width: 650px;"> 
<script type="text/fbml"> 
    <fb:fbml> 
     <fb:request-form 
      action="http://my.app.com/invite/sent" 
      method="POST" 
      invite="true" 
      type="My App Name" 
      content="You should use My App Name. All the cool kids are doing it. 
       <fb:req-choice url='http://apps.facebook.com/my-app' 
       label='<?php 
        echo htmlspecialchars("That sounds sweet!",ENT_QUOTES); 
        ?>' 
       /> 
      " > 
      <fb:multi-friend-selector 
       showborder="false" 
       actiontext="Invite your friends to use My App Name." 
       exclude_ids="1234556,465555" 
       rows="3" 
      /> 
     </fb:request-form> 
    </fb:fbml> 
</script> 
</fb:serverfbml> 

cotizaciones Escapar se hace un poco complicado con todas las etiquetas anidadas, por lo que tiene que ver eso. Puedes ver que mi ejemplo es de una aplicación de PHP, y dejé una llamada de escape htmlspecialchars() solo para fines ilustrativos (aunque esa cadena en particular no necesita escaparse).

De todos modos, si tiene Facebook Connect ya instalado para su aplicación IFrame, entonces esto debería funcionar con un poco de ajuste. Si todavía no tienes Facebook Connect, sigue las instrucciones de Rendering XFBML en el XFBML wiki page.

+0

Zombat, gracias por la información. Esto, sin embargo, plantea una pregunta más. Actualmente estoy usando la biblioteca cliente PHP y tengo el código tradicional $ facebook = new Facebook ($ appapikey, $ appsecret); $ user_id = $ facebook-> require_login(); A partir de ahí estoy ejecutando FBQL para recuperar información del usuario. ¿Conflicto esto con las llamadas FB.Init()? –

+1

No. El cliente de PHP de Facebook es algo completamente independiente de las bibliotecas de Javascript, ya que es totalmente del lado del servidor. La biblioteca de PHP y las bibliotecas de Javascript le permiten hacer las mismas cosas, solo en diferentes entornos (es decir, en el lado del servidor y del lado del cliente). – zombat

Cuestiones relacionadas