Publi

Andanzas en Facebook: Publicar en el muro personal fácilmente

Desde el 20/12/2009 este método de publicación no está permitido por Facebook, para ver el nuevo método, ver este artículo.

Una de las cosas más comunes cuando se hace una aplicación para Facebook es la publicación de contenidos en el muro de la persona que ha ejecutado la aplicación. Esto al final es como un resultado de la ejecución de dicha aplicación (de hecho el objetivo de muchas de ellas es la publicación de un mensaje en el perfil), y de paso nos sirve como promoción para que más gente nos conozca.

La API de Facebook nos proporciona las herramientas para poder utilizar esta característica, que por ejemplo podemos llamar desde FBJS de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script>
var template_id = xxxxxxxxx; // Es el identificador de nuestra plantilla de publicación, más adelante se explica cómo se obtiene este ID. (Sustituir las xxxxxxxxx con ese número).
// En la ventana de publicación, el texto que saldrá para pedirle a los usuarios que publiquen el resultado.
var user_message_prompt = "Comenta algo... si quieres";
// El texto de muestra que saldrá a la hora de publicar.
var user_message = {value: ""};

// La información que introducimos en la plantilla, por ejemplo imágenes y textos fijos que acompañarán nuestro mensaje
var template_data={"cuantagente":"0.04", "images":[{"src":"archivo.jpg", "href":"enlace"}]}
var body_general="Mensaje que aparecerá en el perfil junto a las fotos";

var continuation = function() {
// Podemos dejarlo en blanco si lo deseamos
};

Facebook.showFeedDialog( template_id, template_data, body_general, '', continuation, user_message_prompt, user_message );
</script>

Con este código, ya se mostraría la pantalla de publicación, podemos introducirlo dentro de otros scripts para que se dispare en el momento que nosotros queramos.

En la imagen vienen explicados algunos elementos:
Elementos en la publicación

El elemento template_data, incluirá la información de las palabras clave que hemos incluído en nuestra plantilla, como por ejemplo cuantagente, más adelante se hablará de ello; y además, las imágenes que se incluyen así como un enlace en cada una, todo esto en notación JSON. Básicamente, para no leer mucho, es un formato para intercambio de datos, pero usado también para declarar objetos en Javascript y se utiliza de la siguiente manera:

1
var objeto={"clave1":"valor1", [{"clave2-1":"valor2-1"},{"clave2-2":"valor2-2"}], "clave3":"valor3"};

La función continuation, se llamará una vez se cierre el diálogo de publicación, ya sea tras publicar el contenido como al cerrar la ventana sin publicar. No es posible determinar si se ha publicado o no, al menos Facebook no nos va a dar esa información.

Como hemos visto, es necesaria una plantilla de publicación (feed template), y ésta tendrá un código identificador (template bundle id), para conseguirlo, tenemos que entrar en la zona de administración de nuestras aplicaciones de Facebook (www.facebook.com/developers/apps.php).
Crear plantilla de publicación
A continuación, seleccionamos la aplicación.
Antes de continuar, tenemos que tener en cuenta que, dado que son plantillas, se establecerán palabras clave, que a la hora de la publicación serán sustituidas por lo que realmente significan, y en Facebook estas palabras claves tienen la siguiente forma: {*palabraclave*}. Por ejemplo, la palabra clave {*actor*}, a la hora de publicar un mensaje en el muro, se traducirá por el nombre del usuario que ha realizado la acción, en este caso, el nombre del usuario que acaba de ejecutar nuestra aplicación.

Dicho esto, primero tenemos que crear plantillas de una línea (one line templates), éstas se utilizarán en los resúmenes de los perfiles y, como nos indican en la ayuda del sistema suelen empezar por la palabra {*actor*}, serán las pequeñas historias que se publican en una línea, podemos poner enlaces (a la aplicación por ejemplo), en incluso más palabras clave.

En la siguiente pantalla, configuraremos el mensaje que aparecerá en los muros (el grande, con fotos y todo; aunque por ahora no nos preocupemos de la foto):
Configurando la plantilla
En esta plantilla hemos creado la palabra clave {*cuantagente*}, y más abajo, donde pone plantilla de datos simple, tenemos que escribir la correspondencia en notación JSON.

Tras ello, podemos incluir un enlace de acción o action link, lo más común es utilizarlo como un enlace a nuestra aplicación, será el que aparezca aquí:
Action Link
Debemos configurar el texto del enlace (podemos utilizar también palabras clave) y el enlace en cuestión, y ya sólo publicarlo. Tras ello, aparecerá en el centro de la pantalla una ventana de diálogo con el ID de la plantilla, y ese dato es el que debemos copiar en el código de arriba.
También podemos acceder más adelante a ese número y ver las plantillas que tenemos registradas, si accedemos a Registered Templates Console.

Podemos ver cómo algunas aplicaciones tienen más de un Action Link, para poder hacerlo nosotros, tenemos que hacerlo por código, registrando la plantilla desde la API, para más información, podéis visitar la wiki de desarrolladores de Facebook.

Para la inclusión de imágenes en la publicación, siguiente el ejemplo, tenemos que manipular template_data, añadiendo el elemento “images”, con el siguiente valor:

1
2
3
4
5
6
7
var template_data={"dato1":"valor1", "<strong>images</strong>":[
{"src":"archivo.jpg", "href":"http://www.miweb.com"},   // Imagen 1
{"src":"archivo2.jpg", "href":"http://apps.facebook.com/mi_aplicacion/"},   // Imagen 2
{"src":"archivo3.jpg", "href":"http://www.poesiabinaria.net"},   // Imagen 3
......
]
}

También podría interesarte...

There are 27 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. pollufo /
    Usando Mozilla Firefox Mozilla Firefox 3.0.12 en Windows Windows XP

    estimado
    estoy creando una apps para facebooks
    y no se como hacer que se dispare el scrip que creaste
    soy nuevo en esto de la web y me gustaria aprender mi funcion de llamada es echo “$vector[$numero]” da un numero aleatorio con un chiste del dia
    gracias

  3. xeyen /
    Usando Mozilla Firefox Mozilla Firefox 3.0.11 en Windows Windows XP

    Hola maginifico tutorial pero tengo un problema, me dice que el objeto Facebook de la linea:

    Facebook.showFeedDialog( template_id, template_data, body_general, ”, continuation, user_message_prompt, user_message );

    esta undefined. Sabes como puedo resolverlo? Gracias

  4. admin / Post Author
    Usando Mozilla Firefox Mozilla Firefox 3.5.1 en Linux Linux

    @pollufo
    Para dispararlo nada más cargar la aplicación simplemente tienes que dejar que ese fragmento de código se ejecute en el mismo script que has incluido como canvas de la aplicación.

  5. admin / Post Author
    Usando Mozilla Firefox Mozilla Firefox 3.5.1 en Linux Linux

    @xeyen
    Si dice que algo es undefined, tal vez alguna variable de las que se incluyen en esa línea no está definida. Verifícalo.
    Por otra parte, puede que tu aplicación se esté ejecutando desde un iframe. Lo más sencillo es que tu aplicación sea FBML; para iframes, mira la documentación de la API; que seguro que encuentras cómo hacerlo (ahora mismo no lo recuerdo)

  6. pollufo /
    Usando Mozilla Firefox Mozilla Firefox 3.0.12 en Windows Windows XP

    gracias te pasaste

    ahora tengo 2 aplicaciones funcionando

    apps.facebooks.com/dichoschilenos/
    apps.facebooks.com/marcopredidente/

    todo gracias a tu ayuda

  7. academo /
    Usando Mozilla Mozilla 1.9.1.3pre en Ubuntu Linux Ubuntu Linux

    Hola! Estoy aprendiendo a desarrollar una aplicación para facebook http://apps.facebook.com/coleccionistasjet es una aplicación de intercambio de laminas, soy novato en la plataforma facebook y quisiera saber si puedes ayudarme un poco con algunas dudas que tengo. me encantaria entrar en contacto via msn contigo. Gracias y un saludo desde Colombia

  8. Pablo /
    Usando Mozilla Firefox Mozilla Firefox 3.0.13 en Windows Windows XP

    pollufo :
    estimado
    estoy creando una apps para facebooks
    y no se como hacer que se dispare el scrip que creaste
    soy nuevo en esto de la web y me gustaria aprender mi funcion de llamada es echo “$vector[$numero]” da un numero aleatorio con un chiste del dia
    gracias

    Todavía no entendí como mostrar una frase aletoria cada vez que se ingrese al la aplicación. Como es?

  9. admin / Post Author
    Usando Mozilla Firefox Mozilla Firefox 3.5.1 en Linux Linux

    @Pablo
    Si utilizas un array, puedes obtener un número aleatorio con la función rand(). rand(1,10) obtendrá un número aleatorio entre el 1 y el 10. Si utilizas una tabla MySQL puedes hacer SELECT * FROM [tabla] ORDER BY RAND() LIMIT 1

  10. Jose /
    Usando Google Chrome Google Chrome 2.0.172.43 en Windows Windows XP

    ¡¡¡Muchísimas gracias!!! He estado buscando esta información por todos lados y me parece increíble que no exista buena documentación para FB. Qué Dios te bendiga, hermano! gracias!

  11. Juan /
    Usando Mozilla Firefox Mozilla Firefox 3.5.2 en Windows Windows Vista

    yo quiero hacer una aplicacion estilo el minuto filosofico que ponen, es decir que te da frases de diferentes personas, pero la que hice solo me aparece la misma imagen siempre

    1. admin / Post Author
      Usando Mozilla Firefox Mozilla Firefox 3.5.1 en Linux Linux

      Juan, tienes que especificar en template_data un src de imagen diferente dependiendo de la frase o su autor. Deberías generar esa línea Javascript desde PHP (por ejemplo) para que cada vez te salga una imagen diferente.

  12. Gonzalo /
    Usando Mozilla Firefox Mozilla Firefox 3.5.2 en Mac OS X Mac OS X 10

    Estimado…
    Gracias por la informacion. Soy un ignorante que como la gran mayoria quiere aprender.

    Mi idea tambien es llegar a hacer una aplicacion tipo “minuto filosofico”, ya lo he tomado casi como desafio personal.

    Hasta ahora no se cuales son los pasos a seguir.

    – Yo cree la aplicacion en facebook con la herramienta developer.
    – Luego baje los archivos de facebook y los inclui en mi index.php
    – Intente lo de create feed template y me dieron un id pero en todos los sitios que busco informacion, dicen cosas diferentes.

    Despues… no se que diablos hacer.

    No entiendo como hacer para publicar una frase y que alguien con un boton compartir lo ponga en su perfil, nada mas que eso.

    Bueno la cosa es que te agradeceria que me contaras los pasos si es que puedes.

    Muchas gracias.

  13. Sebastian /
    Usando Google Chrome Google Chrome 3.0.195.21 en Windows Windows 7

    estimado, no entiendo bien como ejecutar el scrpt, me ayudas un poco?

  14. Sebastian /
    Usando Google Chrome Google Chrome 3.0.195.21 en Windows Windows 7

    Estimado mira, esta es mi index, no tengo aun lo que voy a publicar porque primero quiero aprender a publucar pero mira http://elsea.webcindario.com/inde.txt

  15. Jose /
    Usando Google Chrome Google Chrome 3.0.195.21 en Windows Windows XP

    Hola, tu código funciona de maravilla cuando el lienzo está configurado como FBML, pero estoy haciendo una aplicación en Flash y estoy trabajando en un iframe, y cuando cargo el código ya no bota nada… ¿Tienes alguna idea de por qué?

    Otra cosa, sabes cómo hacer para que esta publicación se muestre desde Flash??

    gracias!!!

  16. Ezequiel /
    Usando Google Chrome Google Chrome 3.0.195.21 en Windows Windows XP

    Desde ya te agradezco la ublicacion pero tengo el siguiente error:

    Fatal error: Uncaught exception ‘FacebookRestClientException’ with message ‘All short story templates must include ‘template_body’ fields.’ in /www/110mb.com/g/r/a/n/p/l/a/n/granplan/htdocs/facebook/facebook-platform/php/facebookapi_php5_restlib.php:3003 Stack trace: #0 /www/110mb.com/g/r/a/n/p/l/a/n/granplan/htdocs/facebook/facebook-platform/php/facebookapi_php5_restlib.php(785): FacebookRestClient->call_method(‘facebook.feed.r…’, Array) #1 /www/110mb.com/g/r/a/n/p/l/a/n/granplan/htdocs/facebook/index.php(47): FacebookRestClient->feed_registerTemplateBundle(Array, Array, Array) #2 {main} thrown in /www/110mb.com/g/r/a/n/p/l/a/n/granplan/htdocs/facebook/facebook-platform/php/facebookapi_php5_restlib.php on line 3003

    Me gustaria saber si podrias decirme cual es mi problema. Desde ya te agradezco.

  17. Ezequiel /
    Usando Google Chrome Google Chrome 3.0.195.21 en Windows Windows XP

    No es mi intención ser demasiado pesado. Ya solucione mis problemas previos de buen modo a pesar de ser totalmente rudimentario en este sentido. Sin embargo me tomo el atrevimiento de molestarte de nuevo para consultarse si podrías decirme como hacer para que este script se ejecute no cuando cargo la pagina sino luego de apretar un submit de un formulario. Desde ya te agradezco muchisimo de nuevo.

  18. @lasmovies /
    Usando Mozilla Firefox Mozilla Firefox 2.0.0.20 en Windows Windows XP

    Hola,

    Hace poco realice todo el proceso y logre publicar con imagenes en el muro. en este momento la consola para configurar los templates no esta cargando las imágenes. Sabes algo al respecto, como puedo lograr que aparezca las imágenes.

    Gracias

  19. Alicia /
    Usando Mozilla Firefox Mozilla Firefox 3.5.3 en Windows Windows XP

    Hola:

    Me gustaría agregar un enlace en la pagina web, para que sea publicado por los usuarios que entren al sitio, en Facebook y otras redes sociales
    Me podrían facilitar algun script por favor!
    Se los agradeceré

  20. eCCe /
    Usando Mozilla Firefox Mozilla Firefox 3.5.3 en Windows Windows XP

    Hola! Ya que hablas del facebook aquí… te consulto algo, haber si puedes ayudarme.
    Como hago que para usar mi aplicación NO pida tener acceso… Eso de…:
    “”Si permites el acceso a Minuto Filosófico, esta aplicación podrá obtener información de tu perfil, fotos……..””

    Como hago para que NO salga eso, y que cualquiera, al ir a la aplicación, la pueda utilizar?

    Gracias 😉

  21. admin / Post Author
    Usando Mozilla Firefox Mozilla Firefox 3.5.1 en Linux Linux

    @Gonzalo todos los pasos los tienes en este post.

    @Jose tienes que cargar los scripts de forma externa, en la documentación de la API viene cómo hacerlo… lo malo es que hay cosas que varían mucho de la documentación a cómo se hacen en realidad (están siempre innovando y da mucha pereza actualizar documentación). De todas formas lo estudiaré para postearlo en el futuro.

  22. admin / Post Author
    Usando Mozilla Firefox Mozilla Firefox 3.5.1 en Linux Linux

    @Sebastian a primera vista creo que debería funcionar.

    @Ezequiel quiero hacer un post por el estilo dentro de poco. Espero resolver tus preguntas sobre eso. De todas formas prueba ejecutar “Facebook.showFeedDialog()” desde un evento onclick por ejemplo.

    @@lasmovies verifica la dirección de las imágenes, con http:// y todo, si de verdad está bien, tal vez sea un fallo temporal de Facebook, aunque puede que tu servidor tenga vetado a Facebook porque genere mucho tráfico.

    @Alicia un botón compartir ? Cada red social tiene una URL diferente para compartir, pero en el caso de que tengan siempre facilitan documentación al respecto. En Facebook, por ejemplo puedes entrar aquí: http://www.facebook.com/facebook-widgets/share.php

    @eCCe tiene que salir sí o sí. Los usuarios siempre deben aceptar una aplicación antes de verla. Desde una aplicación puedes vulnerar la privacidad de un usuario… o no; el usuario tiene primero que darte permiso para ello.

  23. eCCe /
    Usando Mozilla Firefox Mozilla Firefox 3.5.4 en Windows Windows XP

    gracias por la respuesta, saludos.

  24. Pingback: Poesía binaria » Andanzas en Facebook: Publicando en los perfiles II /

  25. daniel /
    Usando Mozilla Firefox Mozilla Firefox 3.5.7 en Windows Windows XP

    hola, a mi no me aparece la opcion de: “Create Feed Template” como le hago ?

  26. admin / Post Author
    Usando Mozilla Firefox Mozilla Firefox 3.5.5 en Linux Linux

    @daniel
    Ahora el método de publicación ha cambiado, ya no hay feed templates ni nada, ahora todo es por OpenStream (una palabra que se han inventado en Facebook, que hace prácticamente lo mismo). Mira este artículo: https://poesiabinaria.net/2009/12/andanzas-en-facebook-publicando-en-los-perfiles-ii

Leave a Reply