MuelaLab Blog: Tutoriales Diseño Web, flash, Facebook, php, Actionscript.

Aplicacion Facebook – Invitar Amigos

wenas wen ass… xd Nueno ps ahora les dejare un Videotutorial mas de Facebook..
En este veremos como invitar amigos a nuestra aplicacion… Esto claro con una interfaz de Facebook con ayuda de nuestras tags FBML, un poquito de FQL y el basico PHP. Con esto podremos crear nuestra propia aplicacion de facebook.
Una ves mas les dejo el videotutorial y el tutorial escrito… Espero sus comentarios y preguntas!..

Empesaramos creando un nuevo archivo que llamaremos “invitar.php”, en este tendremos el codigo para invitar anuestros amigos, asi que desde el index.php podrian poner un link a este archivo o una TAB (que vimos en el tutorial de diseño y programacion)..
Abrimos “invitar.php” con nuestro editor y empesamos escribiendo el siguiente codigo:

<?
require_once 'facebook.php';
$appapikey = '6057aeceb41f45db8b0a5f0928b42e48';
$appsecret = '422cb062e20d9cfb719cf9ca093d2870';
$facebook = new Facebook($appapikey, $appsecret);
$user = $facebook->require_login();
if(isset($_POST["ids"])){
echo "<br><br><center>Gracias por Invitar ".sizeof($_POST["ids"])." de tus Amigos a <b><a href=\"http://apps.facebook.com/muelalab/\">Muelalab.com</a></b><br><br>\n";
echo "<h2><a href=\"http://apps.facebook.com/muelalab/\">Volver A Frases Muelalab</a></h2></center>";

Explicacion: Empesamos con las mismas 5 lineas… luego hacemos una condicion, SI exite la variable “ids” que enviamos por POST, entonces escribiremos con “echo” un texto, en este caso el texto nos idica simplemente que ya Invitamos cierta cantidad de personas y nos da la opcion de volver a la apliacion.
La variable $_POST["ids"] es una variable que obtendremos despues de haber enviado las invitaciones, esta contendra los ids a donde se envio la invitacion.

Bueno ahora explicado eso, agregaremos las siguientes lineas:

}else{
$amigos1 = $facebook->api_client->fql_query('SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1='.$user.') AND is_app_user = 1');
$amigos = array();
if (is_array($amigos1) && count($amigos1)){
foreach($amigos1 as $amigo){
$amigos[] = $amigo['uid'];
}}
$amigos = implode(',',$amigos);
$invfbml = "Estas invitado!, <fb:name uid=\"$user\" firstnameonly=\"true\" /> quiere que conoscas las Frases de Muelalab! <fb:req-choice url=\"http://apps.facebook.com/muelalab/\" label=\"Frases Muelalab!\" />";
?>

Explicacion: Aqui continua el codigo, SI NO (else) existe la varible “ids” esto significa que aun no se a invitado a nadie, Entonces en una variable “$amigos1″ aremos un Query a la base de datos de Facebook, donde obtendremos los user ids “uid” de cada uno de los amigos del usuario logeado “$user”, que YA hayan accedido a la aplicacion “is_app_user = 1″…
Luego, creamos un array “$amigos”, y continuamos con un if, que se encarga de meter en el array “$amigos” cada uno de los ids, y por ultimo con la funcion “implode” separamos por comas cada uno de los ids. (Esto es necesario un pokito mas adelante veremos el por q).
Por ultimo se crea una variable “$invfbml” esta tendra el mensaje de “invitacion”, como ven use algunos tags, como el tag “name”, pero el unico tag nuevo aqui seria el tag req-choice, q este nos crea un boton en la invitacion, con la propiedad url indicamos la direccion a donde apunta el boton y con la propiedad label ponemos el titulo del boton.

Casi que acabamos, pero falta lo importante q es mostrar la interfaz de facebook pra seleccioanr a nuestros amigos que queramos invitar.. Esta: (click para ampliar)

Asi que solo agregamos el siguiente codigo:

<fb:request-form type="Frases Muelalab" action="invitar.php" content="<? echo htmlentities($invfbml,ENT_COMPAT,'UTF-8'); ?>" method="post">
<fb:multi-friend-selector actiontext="Invita a tus amigos a leer las frases de Muelalab!!" showborder="true" exclude_ids="<? echo $amigos; ?>" /> </fb:request-form>
<?php }?>

Explicacion: Usamos un tag de FBML pra mostrar los amigos… en realidad son dos tags, uno dentro de otro, asi se usan y aqui les dejo la explicacion:

request-form: Necesario para crear Forms
Propiedad Descripcion
type Titulo Aplicacion
action archivo de destino
content El contenido de la invitacion
method Metodo de envio POST o GET

Como ven en la propiedad content imprimiremos el mensaje de invitacion, la funcion htmlentities sirve para convertir lso caracteres raros a su expresion en html.

multi-friend-selector: Muestra el selecionador de amigos
Propiedad Descripcion
actiontext Texto que se mostrara como Titulo
showborder Mostrar borde (True o False)
action archivo de destino
exclude_ids IDS que no mostraremos. (separados por comas)

Como ven la parte inportante seria el “exclude_ids” donde imprimiremos los ids que habiamos obteneido en el array “$amigos”, de esta forma solo nos mostrara a los amigos que aun no hayn usado la aplicacion.

Una imagen para terminar de entender…

Y asi terminariamos, cabe decir que faebook es quein decide cuantos amigos podemos invitar por dia, y todo estodepende de cuantos usuario visitan tu aplicacion… Pero no cabe duda q esto nos ayduara a incrementar el numero de usario de neustra aplicacion..
La invitacion llega al usuario y se veria de esta forma:

Pues espero les haya sido de ayuda! y pues sigan visitandonos!! espero sus comentarios y sugerencias!
Suerte!!

  • Gracias me sirvio mucho espero que sigas con mas tutoriales :D

  • Hola Muelalab!!!
    Tus tutoriales me han servido de mucha ayuda!!! ya que necesitaba algun paso para crear la aplicacion, como la de los amigos para que tenga “VIRALIDAD dentro de la red social” que es el proyecto que estoy tratando.GRACIAS!

    Mi pregunta!!!!!!
    Sabes alguna opcion para que deje agregar a todos los amigos de facebook? En mi aplicacion me ha dejado hasta 12, pero en la tuya del video se logra ver y solo se podia invitar a 2 amigos…..En tu ejemplo selecciones 1 y te queda otro mas.

    Cualquier respuesta, me sirve y si quieres pasate por la aplicacion.
    Nos vemos en facebook!!

  • Por cierto, mi aplicacion es:

    apps.facebook.com/uvedoble

  • Una consulta como podria hacer que en vez que salgan 4 columnas de amigos me salgan 2 ó 3.
    Gracias!

  • Hola amigo, una pregunta porque solo deja seleccionar 12 amigos. Y no todos, podrias ayudarme con eso :)
    Muchas Gracias

  • no me funcinoa el ejemplo, tengo mi invitar.php igualito que aqui pero me sale este mensaje en el face: La URL http://www.misitio.com/miaplicacion/invitar.php
    ha devuelto el código HTTP 200 y no datos.
    a que sedebe este error???

  • Guillermo, el limite de usario esta dado por facebook, es automatico no se peude modificar, aumenta conforme el numero de usuario de la app y alguans variables mas..

    Denka, checa que la pagina este funcionando correctamente (no este caida), si es un servicio gratuito puede fallar (por q ponen publicidad y falla la carga pro eso), si es asi buscate otro sitio gratuito con el q funcione

    Si no es este tu problema, dimelo para ayduarte pro msn!..
    suerte!

  • Hola camarada… tus tutoriales me han sido de gran ayuda, sin embargo tengo un problemita con los Tabs, el código esta como lo muestras en los ejemplo además los archivos index.php y invitar.php se encuentran en mismo directorio de mi sitio, al ejecutar el index.php todo va bien pero al dar cliec en el tab queme debira abrir el invitar.php me regresa al la misma pag donde inicie es decir al index, sabes a que se debe esto… alguna sugerencia..
    saludos!!

  • Hola Romme, bueno si copiaste el coidgo tal cual, como ves ambas tabs apuntan al index.php..
    tab-item xhref=“index.php” title=“Frases de Exito” selected=“true”
    tab-item xhref=index.php title=“Otro Tab” selected=“true”

    cambia el href de alguno por invitar.php

    Ademas el canvas callbackURl debe apuntar a un directorio y no a un archivo.. algo asi:
    http://muelalab.com/facebook/
    suerte!

  • no funciona, puede haber algun error de codificación? veo caracteres raros:

    if (is_array($amigos1) && count($amigos1)){

    pero si pongo && tampoco funciona…

    por cierto me gustaria saber como añadir un boton que te agregue la aplicación a favoritos, como se hace?

  • como indicas ahi u nerror ahi es con ampersan “&&”.. ahora dices q aun asi no funciona (pero si funciona xD).. asi q indicame q error te muestra al cargar la pagina.. posiblemente sea otra cosa..

    Sobre el boton de favoritos.. no exiten lso favoritos en Facebook.. pero para agregar a favoritos en el explorador de internet se peude ahcer con un link, y javascript.. te dejo un ejemplo: <a href=”javascript:window.external.AddFavorite(‘http://www.muelalab.com/blog’,’.::MuelaLab::. – Tutoriales’);”>

  • hola amigo ;) La página sale en blanco, mira te paso mi código:
    —-
    require_login();

    if(isset($_POST["ids"])){
    echo “Gracias por Invitar “.sizeof($_POST["ids"]).” de tus Amigos a La Comunidad de Ahorradores en Facebook\n”;
    echo “Volver a la Comunidad“;
    }
    else{
    $amigos1 = $facebook->api_client->fql_query(‘SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=’.$user.’) AND is_app_user = 1′);
    $amigos = array();
    if (is_array($amigos1) && count($amigos1)){
    foreach($amigos1 as $amigo){
    $amigos[] = $amigo['uid'];
    }}

    ?>

    echo “amigos”

    ” method=”post”>
    ” />

    ————-
    Puede ser por la versión de php? yo uso la 4 y la aplicación que tengo solo funciona con la 4 y con los ficheros de facebook de php4.

    Respecto lo de añadir la aplicación a favoritos, si se puede, ya lo he visto en otras aplicaciones y es una buena forma de añadirlo al panel de la izquierda.

  • jajaja lo siento el código no ha salido bien…no lo pilla…

  • mira respecto añadir marcador dentro de facebooK, esta aplicación lo tiene:
    http://apps.facebook.com/quotescreator/?_fb_fromhash=37ce60410f51497826ac93b222bdb4e7

  • FAVORITOS¿¿¿ no exite favoritos :S! existe ahcerse FAN.. q es diferente (si me peudes dar un ejemplo pa verlo y ya les explicare)

    ahora tu dices q te sale en blanco.. probaste con mi codigo de ejemplo primero??
    es mas prueba simplemente poneiendo texto ssin nada.. un simple texto… si se ve el texto, pues prueba colocando algo de php
    PD: aun asi es recomendado usar php5 o superior (de hehco la libreria official solo exite para php5)
    suerte!

  • oooo Bookmark.. si bueno no lo asimile Xd.. la traduccion n oes favoritos asi q no me provino la idea.. xD!

    si se puede.. pero mejro hago un tutorial para agregar a bookmart y hacerse fan
    lo psoteo estos dias igual y hoy!..
    suerte!

  • hola Dani, con tu código tal cual tampoco funciona :( lo único que cambié es el include al fichero facebook.php pero sigue saliendo en blanco…

    lo del bookmark está muy bien ya lo he logrado, en el wiki pone como hacerlo pero me ha costado encontrarlo, si haces un tutorial la gente te lo agradecerá.

    Por cierto, los comentarios no me salen tengo que repetirlos, no se si se quedan por ahi y luego salen, si salen repetidos, lo siento ;)

  • okas, sip igual y aveces cuando tien links tengo q aprovarlos..

    el Include no peude ser una pagina (www.ejemplo.com/carpeta/facebook.php)
    solo se puede con ruta relativa asi: carpeta/facebook.php

    Probaste poner texto comun sin tags de php?¿¿¿¿ si con el texto comun sale la pagina en blanco, entonces seguro esta mal configurada tu aplicacion o estas cargando u narhcivo distinto..

    Si sale el texto, entonces es tu php, q como te digo tengo entendido q tiene q ser version 5..

    agreggame al msn para poder ayudarte mejor: damuca_10@hotmail.com

    suerte!

  • hola como pondria un w media player o un flash player en mi wall

  • Hola!
    Hay algo q no estoy entendiendo sobre el invitar.php…
    al probarlo me da un error en linea 3065 de facebookapi_php5_restlib.php

    que podra ser?
    Gracias!

  • el error es pro las modificaciones que se le estan ahcioendo a facebok.

    1.- Baja los archivos de la API denuevo y asegurate que se suban correctamente a tu servidor…

    2.- El codigo funciona correctamente hasta el dia de hoy.. Has pruebas con el codigo q pongo aqui sin hacer modificaciones apra segurarte q lo estes haciendo bien..

    suerte!

  • Grax!
    Si, se q estan haciendo modificaciones al cod de facebook…

    Hace poco q baje los API… pero kiza lo modificaron dspues, asi q probare…

    El resto me funciona… publicar en el muro y eso… excepto los actionLinks q tmpoco andan :S

    Gracias de nuevo!
    Cualquier cosa te consulto ;)

  • Me da error en la linea 13…

    Parse error: syntax error, unexpected ‘;’ in /home/USER/public_html/game/invitar.php on line 13

  • Hola, he hecho una aplicación donde utilizo el enviar invitaciones, tengo 3 usuarios FB para testear y en uno no me funciona (sale la aplicación en blanco), no entiendo que puede pasar, ¿a alguien le pasa lo mismo?

  • Erasmo.. el erroe es de sintaziz, en la linea 12 tenemos esto “&”… sale mal, eso se cambia por amperson & y listo.. si no ..bajate lso archivos de ejemplo que deje yo. estan al final del post “descargar archivos” es deben funcioanr correctamente..

    Jaime. bueno no estoy seguro por q le salga en blanco, ya probaste escribieno solo texto?.. sin embargo este codigo no usa restricciones de permisos n ide logeo, asiq no deberia salir en blanco…

  • Hola, antes que nada , gracias por tus tutoriales, haces ver todo muy fácil, pero tengo un problemita, ya descargué tu archivo de muestra y lo copie y en lugar del error de los && me sale este que está peor jaja. ojalá y puedas ayudarme. Saludos!

    Fatal error: Uncaught exception ‘FacebookRestClientException’ with message ‘Parser error: unexpected ‘)’ at position 70.’ in /home/ixti/public_html/facebook/refranero/facebookapi_php5_restlib.php:3374 Stack trace: #0 /home/ixti/public_html/facebook/refranero/facebookapi_php5_restlib.php(1031): FacebookRestClient->call_method(‘facebook.fql.qu…’, Array) #1 /home/ixti/public_html/facebook/refranero/invitar.php(10): FacebookRestClient->fql_query(‘SELECT uid FROM…’) #2 {main} thrown in /home/ixti/public_html/facebook/refranero/facebookapi_php5_restlib.php on line 3374

  • ele erro no esta en mi arhcivo en este caso.. esta en facebookapi_php5_restlib.php

    que e suno de lso archivos que debes subira tu servidor, este archivo esta “pesado” 150kb.. aveces la subida al servidor falla o se detiene.. y no nos damos cuenta..

    te recomiendo bajes lso archivos actualizados, y lso subas denuevo, segurate q se suba correctamente..
    nos avisas porfavor q paso!
    suerte!

  • Hola Daniel!
    Te agregue a msn, mande un mensaje donde decia q soy geo… cualq cosa te mando la invitacion de nuevo…
    Sabes que todavia no logre q se publiquen los actionlinks :S no se xq… De paso te muestro mi app…
    Si tenes otra cuenta de msn, avisame, xq yo agregue una q posteaste en los comentarios de x aki…
    Saludos y gracias de nuevo x los tuts y la ayuda ;)

  • Hola!!!, primero que nada muchisimas gracias por todos tus tutoriales, me han servido muy bien, pero tengo una duda, hice una aplicacion similar a las frases que hiciste, pero necesito publicar la frase que obtengo en mi muro, el codigo de publicar mensaje me funciona perfecto, pero no se como agregarle la frase que me sale…Muchas gracias otra vez…:)

  • puta ke te kiero cabro
    valeeeeee

  • XD!! gracias..
    ahi caulqueri cosa pregunta y con gusto te ayudo..
    suerte!…

  • oie loki kachai ke me acabo de dar cuenta de ke el codigo tiene un pequeño bug (eaea), la cosa es cuando das a omitir (saltar) puede pasar una de las siguientes cosas:
    1.- te recarga la pagina una i otra vez hasta ke invitas a alguien

    ó

    2.- te tira una pagina en blako
    por ke okurre esto?
    intenté ver la configuracion para redicccionar a una pagina cuando el usuario le de a omitir, pero no se donde esta ese parametro

    ideas?

  • Muchas gracias por el tutorial, muy bien explicado de una manera muy sencilla. Hice todo lo que allí explica y puedo ver todos mis amigos para hacer la invitación, y he logrado hacer varias invitaciones. El problema es que les pregunto a los que están conectados si les llegó y me dicen que no, a pesar que se indica que sí se envió invitaciones. TEngo que darles el link aparte. ¿Por qué será que no llegan las invitaciones?

  • hola carlos…
    bueno estueb probando y eta todo perfecto las invitaciones llegan correctamente
    verifica las siguietnes cosas:
    1.- El texto tiene un limite de caracteres me parece q son 160
    2.- Ua texto sencillo mada de signos extraños y sin links Directos (no son validos los tag

    suerte!

  • Thanks for this article. There are definitely tips in here that I will use.

  • muchas gracias x el tutorial;
    es justo lo q estoy buscando;
    soy un novato total, y estoy ingresando de a poco en este tema; tengo mi aplicacion subida, aunque solo es un simple juego en flash; quiero agregarle el tab d invitar a tus amigos, pero invitar.php me sale en blanco;
    ya probe poniendo solo texto, y sale ok;

    alguna pista, por favor?
    desde ya muchas gracias,
    saludos,
    sebas.

  • Abajo te dejo demo de como yo lo hago

    ——————-

    —————–

    Cualquier cosa me cuentas que otra ayuda necesitas.

  • Definitivamente no pude incluirte el codigo… necesito guia de como incluir el codigo en estos comentarios…

Puedes Seguir Cada Respuesta A Esta Entrada Desde El Archivo RSS 2.0