Step by step developing with Facebook PHP API by Bruno Kamiche

3,266 views

Published on

Step by step developing with Facebook PHP API
Bruno Kamiche's presentation at Facebook Developer Garage Guayaquil, Octuber 24th

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,266
On SlideShare
0
From Embeds
0
Number of Embeds
35
Actions
Shares
0
Downloads
105
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Step by step developing with Facebook PHP API by Bruno Kamiche

  1. 3. Desarrollando una aplicación facebook Paso a Paso Bruno Kámiche Inventarte.net Lima – Perú [email_address]
  2. 4. PASOS PREVIOS ANTES DE CREAR UNA APLICACIÓN
  3. 5. Pasos Previos: - Tener una idea clara y por escrito del objetivo de la aplicación - Definir la secuencia de pantallas y operaciones que aparecerán en la aplicación - Definir la estructura de datos que dará soporte a tu aplicación ¡ ESTABLECE TU ROADMAP !
  4. 6. DEFINE LA ARQUITECTURA QUE UTILIZARÁS
  5. 7. Para que el funcionamiento de la aplicación sea óptimo se deberán utilizar servidores especializados: - Servidores de procesos (WebServer + PHP) - Servidor de Base de Datos - Servidor de contenido estático Si tu aplicación estará basada en flash y lo servirás desde un servidor diferente al de PHP recuerda crear los archivos de políticas de seguridad ( crossdomain.xml )
  6. 8. Base de Datos Servidor de Aplicación Servidor de Contenido Estático
  7. 9. <?xml version=&quot;1.0&quot;?> <!DOCTYPE cross-domain-policy SYSTEM &quot;http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd&quot;> <cross-domain-policy> <allow-access-from domain=&quot;*&quot; /> </cross-domain-policy> Ejemplo de archivo crossdomain.xml
  8. 10. CREAR LA APLICACIÓN EN FACEBOOK
  9. 23. DIFERENCIAS ENTRE UNA APLICACIÓN FBML y IFRAME
  10. 24. Aplicaciones FBML: - Puedes hacer una aplicación nueva mucho más rapido - Carga más rapido - Permite un acceso mas simple a los servicios de Facebook - Puedes utilizar URLs amigables en tu aplicación Aplicaciones IFRAME: - Son más fáciles de integrar a facebook (en sitios previamente existentes) - La interacción con el browser es más rápida - Te permite el uso de Javascript, HTML y CSS sin restricciones - Funcionan mejor si requieres mucho uso de AJAX - Permite el empleo de herramientas de Debug de HTML y Javascript - Puedes utilizar librerias de Javascript existentes ( Jquery )
  11. 25. DESARROLLA TU APLICACIÓN ¡MANOS A LA OBRA!
  12. 26. Utiliza un archivo de configuración: Ejm: <?php $db_ip = '<ip o nombre de tu servidor>'; $db_user = '<nombre de usuario>'; $db_pass = '<password>'; $db_name = '<nombre de la BD>'; $api_key = '<api key>'; $secret = '<secret key>'; $memcachedserver = '<ip o nombre de tu servidor memcached>'; $static='http://static.mydomain.com'; ?>
  13. 27. Archivo de autorización: <?php @ob_end_flush(); @ob_start(&quot;ob_gzhandler&quot;); @ob_implicit_flush(0); @error_reporting(E_ALL & ~E_NOTICE); @mb_internal_encoding(&quot;UTF-8&quot;); @mb_http_output(&quot;UTF-8&quot;); @ini_set(&quot;default_charset&quot;,&quot;UTF-8&quot;); include_once 'config.php'; include_once 'db/db.php'; $db->sql_query(&quot;SET NAMES UTF8&quot;); @session_start(); // the facebook client library require_once('client/facebook.php'); require_once('mainfile.php'); if(isset($_POST[&quot;fb_sig_user&quot;])) $user=$_POST[&quot;fb_sig_user&quot;]; else die(); $facebook=new Facebook($api_key, $secret); $db->sql_query(&quot;INSERT INTO users(facebookid, datetime) VALUES($user, UNIX_TIMESTAMP(NOW()))&quot;); @ob_end_flush(); ?>
  14. 28. Archivo de eliminación de Usuario: <?php @ob_end_flush(); @ob_start(&quot;ob_gzhandler&quot;); @ob_implicit_flush(0); @error_reporting(E_ALL & ~E_NOTICE); @mb_internal_encoding(&quot;UTF-8&quot;); @mb_http_output(&quot;UTF-8&quot;); @ini_set(&quot;default_charset&quot;,&quot;UTF-8&quot;); // this defines some of your basic setup include_once 'config.php'; include_once 'db/db.php'; $db->sql_query(&quot;SET NAMES UTF8&quot;); if(isset($_POST[&quot;fb_sig_user&quot;])) { $user=$_POST[&quot;fb_sig_user&quot;]; $db->sql_query(&quot;DELETE FROM users WHERE facebookid=$user&quot;); } @ob_end_flush(); ?>
  15. 29. Puntos a tomar en cuenta: - Asegúrate de utilizar UTF-8 tanto en la base de datos como en el programa. - Utiliza memcached para mantener datos en memoria y evitar consultas a la base de datos (http://www.danga.com/memcached/) - Si tu aplicación es de tipo IFRAME habilita el uso de sesiones para poder enviar datos. - Cuando sea la primera vez que el usuario utiliza tu aplicación debes generar un “profile box” con un contenido default o en blanco.
  16. 30. Activar el uso de UTF-8 en PHP: @mb_internal_encoding(&quot;UTF-8&quot;); @mb_http_output(&quot;UTF-8&quot;); @ini_set(&quot;default_charset&quot;,&quot;UTF-8&quot;); Activar el uso de UTF-8 en MySQL (Lo primero que debes hacer apenas una vez establecida la conexión) $db->sql_query(&quot;SET NAMES UTF8&quot;); Activar el uso de Sesiones (para poder pasar información entre llamadas de un link a otro) @ini_set(&quot;session.use_trans_sid&quot;,&quot;0&quot;); @session_start();
  17. 31. Como parsear URLs amigables : function ProcessParameters() { global $PATHS; $_SERVER[&quot;PATH_INFO&quot;]=$URL=$_SERVER[&quot;REQUEST_URI&quot;]; $PARAMSTR=&quot;&quot;; $p=strpos($URL,&quot;?&quot;); if($p!==false) { $_SERVER[&quot;QUERY_STRING&quot;]=$PARAMSTR=substr($URL,$p+1); $_SERVER[&quot;PATH_INFO&quot;]=$URL=substr($URL,0,$p); } if(substr($URL,0,1)==&quot;/&quot;) $URL=substr($URL,1); if(substr($URL,-1)==&quot;/&quot;) $URL=substr($URL,0,strlen($URL)-1); $NPATHS=sizeof($PATHS=split(&quot;/&quot;, $URL)); $NPARAMS=sizeof($PARAMS=split(&quot;&&quot;,$PARAMSTR)); for($nx=0;$nx<$NPARAMS;$nx++) { $param=split(&quot;=&quot;,$PARAMS[$nx]); $param[0]=str_replace(&quot;.&quot;,&quot;_&quot;,$param[0]); if(isset($param[1])) $_GET[$param[0]]=htmlspecialchars_decode(urldecode($param[1])); else $_GET[$param[0]]=&quot;&quot;; } return($PATHS[0]); }
  18. 32. $PATHS=array(); $opt=ProcessParameters(); switch($opt) { case &quot;urlamigable1&quot;: app_funcion1(); break; case &quot;urlamigable2&quot;: app_funcion2(); break; case &quot;&quot;: app_main(); break; default: echo &quot;<fb:redirect url=&quot;{$appurl}&quot; />&quot;; die(); }
  19. 33. Como crear un “Profile BOX”: <?php function app_setinfobox($user, $htmlw=&quot;&quot;, $htmln=&quot;&quot;) { // narrow : 184 * 250 // wide : 380 * X try { $result=$facebook->api_client->profile_setFBML(NULL, $user, &quot;<fb:wide>&quot;.$htmlw.&quot;</fb:wide>&quot;.&quot;<fb:narrow>&quot;.$htmln.&quot;</fb:narrow>&quot;, NULL, &quot;&quot;, &quot;<fb:narrow>&quot;.$htmln.&quot;</fb:narrow>&quot;); } catch (Exception $e) { } } ?>
  20. 34. Como publicar contenido en el News Feed del usuario y sus amigos utilizando Javascript: <script type='text/javascript'> var attachment = {&quot;name&quot;:&quot;<Nombre de tu Aplicación>&quot;,&quot;href&quot;:&quot;{$appurl}&quot;, &quot;caption&quot;:&quot;{*actor*} <mensaje>.&quot;, &quot;description&quot;:&quot;<texto que quieres publicar>&quot;, &quot;media&quot;:[{&quot;type&quot;:&quot;image&quot;, &quot;src&quot;:&quot;<url de la imagen>&quot;,&quot;href&quot;:&quot;{$appurl}&quot;}] }; var actionLinks = [{ &quot;text&quot;: &quot;Texto de Action Link&quot;, &quot;href&quot;: &quot;{$appurl}&quot;}]; Facebook.streamPublish(&quot;&quot;,attachment,actionLinks,null,&quot;<titulo para escribir contenido>&quot;); </script>
  21. 35. Como publicar en el News Feed utilizando FBML: En la aplicación se deberá mostrar el siguiente contenido: <form fbtype=&quot;feedStory&quot; id=&quot;publishformdata&quot; action=&quot;<url del form>&quot;> <input type=&quot;hidden&quot; name=&quot;<variable>&quot; value=&quot;<valor>&quot;/> <input type=&quot;submit&quot; label=&quot;Presiona aquí para continuar&quot; /> </form>
  22. 36. Programa para Procesar el Feed Form: <?php include(“config.php”); // Recibir y validar los parametros en $_POST $template=<id del template definido>; // *titulo* *mensaje* $title=&quot;<titulo del mensaje>&quot;; $mensaje=&quot;<cuerpo del mensaje>&quot;; $images=array( array(&quot;src&quot;=>&quot;<url de la imagen>&quot;,&quot;href&quot;=>&quot;{$appurl}&quot;) ); $tokens=array( &quot;images&quot;=>$images, &quot;titulo&quot;=>$title, &quot;mensaje&quot;=>$mensaje ); $feed = array('template_data' => $tokens, 'template_id' => $template ); $publish = array('method'=> 'feedStory', 'content' => array( 'feed' => $feed, 'next' => &quot;{$appurl}&quot;)); echo json_encode($publish); ?>
  23. 37. Como utilizar el Editor de Templates
  24. 42. ¡Gracias! Bruno Kámiche Inventarte.net Lima – Perú [email_address]

×