Inicio > Interneteando > Andanzas en Facebook: Publicar en el muro personal fácilmente

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.totaki.com/poesiabinaria"},   // Imagen 3
......
]
}
votar
  1. pollufo
    Jueves, 13 de Agosto de 2009 a las 14:07 | #1

    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

  2. xeyen
    Jueves, 13 de Agosto de 2009 a las 15:03 | #2

    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

  3. Jueves, 13 de Agosto de 2009 a las 19:33 | #3

    @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.

  4. Jueves, 13 de Agosto de 2009 a las 19:41 | #4

    @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)

  5. pollufo
    Domingo, 16 de Agosto de 2009 a las 19:38 | #5

    gracias te pasaste

    ahora tengo 2 aplicaciones funcionando

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

    todo gracias a tu ayuda

  6. academo
    Sábado, 22 de Agosto de 2009 a las 17:19 | #6

    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

  7. Miércoles, 26 de Agosto de 2009 a las 09:26 | #7

    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?

  8. Miércoles, 26 de Agosto de 2009 a las 13:35 | #8

    @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

  9. Lunes, 31 de Agosto de 2009 a las 08:12 | #9

    ¡¡¡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!

  10. Juan
    Sábado, 5 de Septiembre de 2009 a las 21:14 | #10

    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

  11. Domingo, 6 de Septiembre de 2009 a las 05:57 | #11

    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. Martes, 8 de Septiembre de 2009 a las 04:27 | #12

    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
    Miércoles, 16 de Septiembre de 2009 a las 17:26 | #13

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

  14. Sebastian
    Miércoles, 16 de Septiembre de 2009 a las 17:53 | #14

    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
    Sábado, 19 de Septiembre de 2009 a las 08:08 | #15

    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. Jueves, 24 de Septiembre de 2009 a las 10:14 | #16

    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. Viernes, 25 de Septiembre de 2009 a las 10:06 | #17

    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. Jueves, 15 de Octubre de 2009 a las 03:13 | #18

    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. Domingo, 18 de Octubre de 2009 a las 18:33 | #19

    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. Lunes, 26 de Octubre de 2009 a las 03:34 | #20

    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. Martes, 3 de Noviembre de 2009 a las 03:38 | #21

    @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. Martes, 3 de Noviembre de 2009 a las 03:50 | #22

    @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. Miércoles, 4 de Noviembre de 2009 a las 04:56 | #23

    gracias por la respuesta, saludos.

  24. daniel
    Viernes, 15 de Enero de 2010 a las 18:37 | #24

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

  25. Viernes, 15 de Enero de 2010 a las 19:06 | #25

    @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: http://totaki.com/poesiabinaria/2009/12/andanzas-en-facebook-publicando-en-los-perfiles-ii

  1. Martes, 11 de Agosto de 2009 a las 17:54 | #1
  2. Sábado, 19 de Diciembre de 2009 a las 22:34 | #2

Visita otras webs de la red