Poesía Binaria

Andanzas en Facebook: Publicando en los perfiles II

Hace unos meses hice un post sobre la publicación en los perfiles del usuario en Facebook desde nuestras aplicaciones. Bien, desde el día de hoy (20/12/2009) han cambiado los métodos.

Llevan amenazando ya un tiempo, pero hasta ayer no les hice caso, y es que los nuevos métodos (aunque prometen unificar todo el sistema de publicaciones de Facebook, autopublicaciones en perfiles, para los amigos, metadatos y lectura desde nuestras aplicaciones (más info. aquí), tienen detalles que no a todo el mundo le gustan. Como por ejemplo las publicaciones multi línea, el uso de palabras clave {*actor*}, {*mensaje*}, {*palabraquemeacabodeinventar*} dentro de todos los campos de publicación y la limitación de los action links a 1 !!!!!!! 🙁

Lo que sí han hecho es simplificarlo todo: no tenemos que crear un template para luego utilizarlo, y el hecho de que podamos definirlo todo por código y llamarlo cuando queramos, además, no tenemos límite de publicaciones distintas, ya que como las tenemos que crear cada vez que publiquemos, podemos hacer lo que queramos (antiguamente había un límite de 100 templates por usuario, suficientes, pero a lo mejor alguien necesitaba más).

Se potencia el uso de JSON (como los arrays en Javascript), y es que si es desde Javascript desde donde llamamos a la función, lo vamos a necesitar.

Aquí incluyo un fragmento de código para una publicación (he acompañado cadenas largas y palabras clave en todas partes para ver el comportamiento de Facebook con ellas, observar qué límites tenemos y demás):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var actionlinks=[{"text":"Mi minuto filosófico","href":"http://apps.facebook.com/minutofilosofico/"},{"text":"Ésta frase en mi perfil!","href":"http://apps.facebook.com/minutofilosofico/?frase=1234"}]

var attachment = {'name': '{*actor*} No sé si funciona aquí, veamos si aparece un enlace, o también, en caso de un texto realmente largo qué pasa, porque lo mismo me pongo a escribir letras, y pasa como en el caption, que sólo sale un par de líneas, y me quedo con las ganas de que salga más texto, pero bueno, el caso es que tengo que probar tanto por el tutorial como por mis aplicaciones.',
          'properties':{0:{'text':'enlace 1',
                    'href':'http://www.totaki.com'},
                                   1:{'text':'enlace 2',
                    'href':'http://www.totaki.com'},
  },
          'description': 'Una descripcion \nlarga que incluye un enlace que \nno funciona bien: <a href="http://www.totaki.com/">con un enlace</a> y una <strong>negrita</strong> que<br/> tampoco funciona, porque Facebook ha limitado lo que puede salir en estos sitios; además, mi\n mensaje es lo suficientemente largo como para que aparezca el texto de Mostrar más. {*actor*} aquí no funciona',
          'href':'http://www.totaki.com',
          'caption': '{*actor*} está probando algunas cosillas, pero ya puestos vamos a probar un caption largo largo largo, para probar la capacidad de estos nuevos métodos que tiene Facebook para publicar en los perfiles de la gente. Tal vez el caption se corte, tal vez, muestre el texto de ver más, o tal vez el texto ni se publique por ser demasiado largo, veamos qué pasa.',
          'media':[{'type':'image',
                'src':'http://www.totaki.com/unafoto.jpg',
                'href':'http://www.totaki.com'},

],
                  };
Facebook.streamPublish('Texto para el usuario', attachment, actionlinks, null, 'Otra frase');

Nos aparece algo así:

En donde nos damos cuenta que:

Más adelante, cuando publicamos, nos damos cuenta de que sólo se permite un action link (enlaces que acompañan a Comentar y Me gusta), en Facebook llevaban reduciendo los action links unos días para todas las publicaciones.

Aunque un detalle importante es la inclusión de las propiedades (properties), es un array que puede contener textos y enlaces que los acompañen, y se publican, he podido hacer una publicación con 12 propiedades sin problemas.

El código superior puede servir como plantilla para vuestras publicaciones.

Pero, ¿qué pasa si quiero incluir el nombre del usuario que publica en name o description? debemos recurrir a la API de Facebook, podríamos pensar que desde fbml podemos hacerlo, pero no lo permiten en estos nuevos métodos, por lo que tendremos que recurrir a un lenguaje de servidor como PHP; de la siguiente forma:

1
$yo = $facebook->api_client->users_getInfo($user_id, "uid, name, first_name");

$user_id tiene que estar previamente definida y ser la id del usuario actual (para ello, sólo hay que seguir el ejemplo que te da Facebook para crear una aplicación, copiado y pegado).
El dato que queremos, es decir el nombre, lo encontraremos en $yo[0][‘first_name’], por lo que, en mitad del código fbjs anterior, si nos encontramos en un archivo PHP podemos hacer lo siguiente:

1
2
3
var attachment = {'name': '<? echo $yo[0]['first_name']; ?> sí que funciona aquí, veamos si aparece un enlace, o también, en caso de un texto realmente largo ...',
          'properties':{0:{'text':'enlace 1',
                    'href':'http://www.totaki.com'},

También podría interesarte....