Tag: facebook applications (2 posts)
Cosas que no funcionan en la api de facebook (Parte I)
Publicado el 12 Feb 2010
Creo que cualquiera que haya desarrollado con la api de facebook vera que éste tema da mucho de sí, de ahí que lo haya dividido en partes y cada día voy a hablar de algún punto en particular.
Ampliamente usado en muchísimos sites pero con una gran pega (al menos para algunos): no permite la pre-moderación de comentarios, bueno, o si según ellos, ya que permiten a partir de la variable numposts fijar el número de comentarios máximo mostrado por el widget, con lo que poniendo éste numero a 0, nunca se mostraran los comentarios de los usuarios en el widget en el momento de hacerlos, y se podría realizar una premoderación sobre ellos. Pues bien, esto no funciona en el widget. Por mucho que nos empeñemos en cambiar ese número, se lo pasa por ahí, y siempre muestra el número de comentarios por defecto, en este caso 10.
Ésto esta reportado en su foro de desarrolladores desde hace por lo menos un mes, pero hasta la fecha no han hecho mucho caso...
Una funcionalidad muy ligada a la anterior es la de consultar a través de FQL todos los comentarios que los usuarios han dejado en nuestro site con el widget. No esta soportado por la api un método para poder recuperar todos los comentarios de un site, sino que hay que ir pidiendo los comentarios para cada uno de los xid con los que hayamos registrado nuestros widgets de comentarios. Pero según la documentacion del método usado para pedir los comentarios, Comments.get, se puede hacer una query directamente a la tabla de comentarios para pedir los comentarios de todos los xid que queramos, pudiendo bajar de una vez todos los comentarios del site. Pues bien, otra de las cosas que no funcionan, o más bien que su documentación dice que se puede hacer y no es así. Según su documentación, teniendo una sesión valida, podríamos hacer lo siguiente:
session.post("facebook.fql.query",:query => "select xid,text,id,fromid,time from comment
where xid IN (#{ids.join(',')})")
donde el array ids contendría todos los xid usados por nuestros widgets de comentarios. Si ese array contiene mas de 20 elementos (aproximadamente, tampoco es una cienca exacta :) ) ese petición falla, devolviendo un error. Por lo tanto tenemos que escalonar nuestras peticiones limitando en cada query a 20 (mas o menos) el numero de xid pedidas.
session = Facebooker::Session.create
offset = 0
while offset <= Item.count do
items = Item.find(:all,:select => :id, :limit => 20, :offset => offset).map(&:id)
session.post("facebook.fql.query",:query => "select xid,text,id,fromid,time from
comment where xid IN (#{items.join(',')})")
offset += 20
end
Si en nuestro site, tenemos mucho contenido, con lo que tendremos muchísimos widgets de comentarios, ésta tarea puede ser laboriosa y costosa en tiempo y recursos.
Una última funcionalidad de la que no te puedes fiar mucho tampoco, es la posibilidad de que te notifiquen cada vez que algún usuario comenta en tu site con el widget. Se supone que te mandan una notificación a tu cuenta de facebook, cosa que yo he visto funcionar algunas veces y otras muchas no.
Hay un hilo de foro de desarrolladores bastante interesante alrededor del widget de comentarios, que intenta aclarar muchas de las dudas que los usuarios tienen alrededor de él, y que ha juzgar por el numero de respuestas del hilo, son muchísimas :) ...
¿Para cuando un simple método que nos devuelva todos los comentarios de nuestro site? ¿Tan difícil es?
Y vosotros, ¿os habeís encontrado con mas fallos básicos en la api de facebook?
Facebook empieza a dar los emails de sus usuarios a los desarrolladores
Publicado el 10 Feb 2010
Como anunció facebook en su blog para desarrolladores el pasado mes de enero, van a empezar a ceder el email de los usuarios a todas aquellas aplicaciones que lo solicten, previa autorización de los mismos.
Hasta ahora esto no era posible. Cuando desde un site se queria hacer una integración con facebook, através de facebook connect por ejemplo, se podia conseguir que los usuarios iniciaran una sesión valida en nuestro site através de las credenciales de facebook, pero en ningún caso podiamos enviar notificaciones a los usuarios a su email. El único canal existente para comunicarnos con los usuarios de facebook era através del proxied email donde dependias del propio facebook para hacer llegar tus notificaciones a los usuarios.
Ahora todo esto ha cambiado, y lo mejor de todo es que también funciona ;-). Através de un simple permiso llamado 'email' podemos solicitar a nuestros usuarios que compartan, incluso de manera obligatoria si así lo deseamos, su dirección de email en facebook con nuestro site.
A partir de ahora, podremos conseguir registrar a los usuarios en nuestro site de una manera mucho mas autónoma, sin tener que pedir campos adicionales una vez que se han logueado con facebook connect.
Para los desarrolladores de facebook bajo rails que usen el plugin facebooker ya pueden conseguir los email de los usuarios de la siguiente manera. Al inicializar facebook connect en nuestra vista, podemos pedir el permiso especial:
<%= init_fb_connect "XFBML" , :app_settings => {:permsToRequestOnConnect => "email"} %>
con lo que conseguiremos, que una vez el usuario haya hecho login en facebook, le salga la siguiente petición de permisos:
Una vez que el usuario ha aceptado los permisos, podemos acceder a su email con una simple FQL (Facebook Query Language:
"SELECT email FROM user WHERE uid='#{facebook_session.user.id}'";
o através del método directo de facebooker:
@user.email = facebook_session.user.email