Crear una aplicación de Frases para Facebook: Publicar en muro de amigo

Este articulo hace parte de la vieja API de Facebook, para más información sobre la nueva API te recomiendo leer Funcionamiento de la Graph API de Facebook.

Hasta el momento nuestra aplicación de frases con opción de publicar en nuestro muro la frases, tabs y comentarios debe ir algo así:
La aplicación es funcional pero no tiene ese toque social que puede hacer crecer a la aplicación: Publicar frases en el muro de nuestros amigos. Con esto es que podemos hacer conocer la aplicación y también enviando invitaciones pero de eso hablare en otro post. Para poder realizar esto usaremos el método propio de Facebook llamado Stream.publish del cual ya había hablado en un post anterior.

<script>
function publicar(){
var mensaje = "<?php echo $frases[$frase]; ?>";
var user_message_prompt = "¿Deseas comentar algo?";
var user_message = "Que buena frase!";
var attachment = {'media':
[{'type':'image',
'src':'https://brianur.info/logo.png',
'href':'http://apps.facebook.com/tuaplicacion/'}],
'name': mensaje +'<br />',
'description':'Frases Urban'};
var target_id = <? echo $_POST['friend_sel']; ?>;

Facebook.streamPublish(user_message,attachment,'',target_id,user_message_prompt);
}
publicar();
</script>

La anterior función es casi igual a la de publicar la frase en nuestro muro, solo tenemos como novedad la variable target_id en la que debe ir la id del usuario (amigo) y luego se debe pasar a Facebook.streamPublish. Si hacen la prueba colocando algún id, verán que pueden hacer publicaciones en el wall de un amigo. Solo nos hace falta el formulario para que el usuario pueda seleccionar a un amigo:

Para el formulario Facebook nos provee con fb:friend-selector el cual nos permite de una forma muy fácil hacer un formulario que despliega una lista cuando vamos escribiendo el nombre. También contamos con Fb:multi-friend-selector y Fb:multi-friend-selector (condensed) para enviar publicaciones a múltiples usuarios, pero eso lo veremos en otro post.

<form method="post" action="enviar.php">
<fb:friend-selector uid="loggedinuser" name="uid" idname="friend_sel" />
<input type="submit" value="Publicar" />
</form>
<?
if (isset($_POST['friend_sel'])) {
?>
<script>publicar();</script>
<?
}
?>

Si quieres puedes quitar el action, depende de como tengas tu aplicación. Si te fijas el código anterior tiene PHP, básicamente lo que hace es recibir el id del usuario y ejecutar la función publicar… funciona para lo que queremos pero no es lo mejor en algunos casos, más adelante veremos como mejorar este formulario.

  22 Comentarios

  1. Frases Facebook   •  

    Muy buen aporte! Muchas gracias!

  2. Robert   •  

    Gran tutorial, yo me guié para realizar publicaciones por este otro enlace: http://bit.ly/pBnQLe

    Y me resulto más claro

  3. Alex   •  

    Exelente tutorial.. muchas gracias me sirvio de mucho justo lo que buscaba xD

  4. Said   •  

    Hola Brian estoy intentando implementar esto en una aplicación ya me carga el friend selector pero cuando le doy publicar sale:

    Lo sentimos, la aplicación que estabas usando está experimentando un problema. Por favor, inténtalo de nuevo más tarde.

    Empty response received.

    Podrias ayudarme, creo que es porque no tengo el enviar.php pero ese codigo no se como va o cual es, podrias mandarmelo, o corregirme si estoy mal

    mi codigo es este:

    function publicar(){
    var mensaje = «»;
    var user_message_prompt = «Deseas comentar algo?»;
    var user_message = «Que buena frase»;
    var attachment = {‘media’:
    [{‘type’:’image’,
    ‘src’:’http://www.e-magineyou.com/fut11/app1/fut11.jpg’,
    ‘href’:’http://apps.facebook.com/fut_frases/’}],
    ‘name’: mensaje +»,
    ‘description’:’Fut11′};
    var target_id = ;

    Facebook.streamPublish(user_message,attachment,»,target_id,user_message_prompt);
    }
    publicar();

    publicar();

  5. Daniel   •  

    Hola Brian:

    Muy bakano tu trabajo…. Ya resolviste como hacer para publicar en el muro de varios amigos usando el multi friend selector…. ya lo publicaste, me interesa muchisimo ese tema… Estoy en Cali y necesito desarrollar eso… puedes colaborarme?

  6. Make Pixels   •  

    Alguien tiene todo el codigo funional , si me lo manda se lo agracere mucho. el correo es [email protected] Gracias de nuevo.

  7. Brian Urban   •     Autor

    En enviar.php debe estar la función publicar.
    Saludos!

  8. Raul   •  

    Felicitaciones Brian, retenaz.
    Cuando dices
    Que hay en envias.php

    Gracias.

  9. daniel   •  

    amigo sabes como hacer para publicar en el muro de una fan page facebook tambien he visto esa opción
    espero respuesta gracias por la ayuda

  10. Nicolás   •  

    Hola Brian,
    Ante todo una vez más gracias por tremendo aporte,
    Te escribo para pedirte ayuda, ya que no he tenido mucho exito en implementar este codigo en un archivo TPL (de template) en el CMS que estoy acomplando en FBML (queda bien, pero no funciona, carga la misma página, muy distinto que al subir el archivo «enviar.php» en donde se ejecuta sin ningun problema).
    Si pudieses darme algun consejo que me pueda servir, te estaré muy agradecido.
    Slds

  11. Brian Urban   •     Autor

    Eso también lo hago usando la Graph API xD lo que pasa es que el método Facebook.streamPublish hace parte de la Old Rest API la cual poco a poco se esta dejando de usar, entonces para no responderte lo mismo de la vez pasada próximamente escribiré sobre la Graph API para que veas como funciona.

  12. Felipe   •  

    Gracias, estare leyendo .. jejeje 🙂
    Amm, una consultilla mas, volviendo al tema de publicar en muros de los amigos.. cuando publico algo en el muro me sale ..

    Hace 10 minutos a través de Mi aplicacion · me gusta · Comentar · Ver amistad

    he visto que otras aplicaciones en ves de que diga «Ver amistad», dice «Ir a Mi aplicacion» ..
    como se hace eso ?.. tengo que editar algo a la funcion del script ?
    bueno espero respuesta 🙂
    Saludos

  13. Brian Urban   •     Autor

    Nicolás: Aun no lo he posteado pero lo haré próximamente 😉

    Felipe: Eso se hace con la Graph API, es algo más complejo de hacer pero puedes bajarte el PHP SDK
    y leer un poco la documentación oficial, cuando sepas como funciona puedes probar algo como:

    $facebook->getLoginUrl(array('canvas'=>1,'fbconnect'=>0,'req_perms'=>
    'publish_stream','next'=>'urlapp','cancel_url'=>'urlapp'));

    El tag fb:prompt-permission se inserta en cualquier parte de la pagina.

  14. Felipe   •  

    Gracias, me funciono super ! 😀 ..
    tengo otra duda, he visto que algunas aplicaciones piden permiso, antes de entrar a la aplicacion .. vi tu ejemplo que hiciste, pero lo que yo quiero es que al entrar a la aplicacion, que el usuario de los permisos .. y luego de eso entrar a la aplicacion.
    como lo hago ?
    donde y como pongo la etiqueta –> <fb:prompt-permission ..
    bueno eso, cualquier cosa,estare pendiente.
    Saludos.

  15. Nicolás   •  

    Brian
    sinceramente gracias por este aporte, quisiera saber como podría hacer para publicar en el muro de varios amigos usando el multi friend selector o si es que ya has hecho el post respectivo , gracias adelantadas!

  16. Brian Urban   •     Autor

    Hola Felipe, depende del tipo de formulario así mismo debes usar $_POST o $_GET, en mi caso lo envió usando POST y después hago un var target_id = <? echo $_POST[‘friend_sel’]; ?>; y listo.

    Saludos.

  17. Felipe   •  

    HOla Urban, muy buena tu pagina . La primera que veo y que explican bien como hacer una app en facebook. 🙂
    mi duda es la siguiente:
    var target_id = 'id del usuario en FB';
    En esa linea, no se como poner el id del amigo selecionado en el form, me di cuenta que ocupas –> $_POST['friend_sel'], he intente darle a la variable ‘target_id’ de la funcion del script el valor del parametro, con $_GET[‘friend_sel’] .. pero no me funciono.
    bueno espero alguna respuesta.
    Saludos.

  18. Alan   •  

    no anda.. no podes subir ya andando la apli??? …. y para cuadno el multi selector?

  19. HANS   •  

    Hola brother muy bueno el tutorial pero no se que poner en «href’:’http://apps.facebook.com/tuaplicacion/» no que cual es mi aplicación o por favor dime como saco o donde encuentro mi aplicación…. Gracias!!

    • Brian Urban   •     Autor

      En la configuración de la aplicación, en la sección de Canvas hay algo llamado Página de trabajo. Allí uno escribe la dirección para la aplicación, la cual es la que después se pone en el href.

  20. Brian Urban   •     Autor


    Junior:

    Oye buscando por internet encontre tu pagina…

    Tengo dias buscando un ejemplo, para hacer esto en facebook..
    te envio la liga, a ver si me puedes ayudar
    http://bit.ly/czqa04

    aqui tiene un muro de facebook, pero desde la pagina..
    ya he buscado ejemplos y no encontrada nada que puedo hacer lo que hicieron ahi, ojala puedas ayudarme..

    Según veo ellos usan un Widget de tabs, para mostrar el perfil se puede usar una «insignia de perfil» eso lo puedes encontrar en http://www.facebook.com/badges/profile.php luego lo puedes modificar a tu conveniencia.
    Saludos.

  21. Junior   •  

    Oye buscando por internet encontre tu pagina…

    Tengo dias buscando un ejemplo, para hacer esto en facebook..
    te envio la liga, a ver si me puedes ayudar
    http://bit.ly/czqa04

    aqui tiene un muro de facebook, pero desde la pagina..
    ya he buscado ejemplos y no encontrada nada que puedo hacer lo que hicieron ahi, ojala puedas ayudarme..

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *