42

Step by step developing with Facebook PHP API by Bruno Kamiche

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 2: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 3: Step by step developing  with Facebook PHP API by Bruno Kamiche

Desarrollando una aplicación facebookPaso a Paso

Bruno KámicheInventarte.netLima – Perú

[email protected]

Page 4: Step by step developing  with Facebook PHP API by Bruno Kamiche

PASOS PREVIOSANTES DE CREAR UNA APLICACIÓN

Page 5: Step by step developing  with Facebook PHP API by Bruno Kamiche

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 !

Page 6: Step by step developing  with Facebook PHP API by Bruno Kamiche

DEFINE LA ARQUITECTURAQUE UTILIZARÁS

Page 7: Step by step developing  with Facebook PHP API by Bruno Kamiche

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 )

Page 8: Step by step developing  with Facebook PHP API by Bruno Kamiche

Base de Datos

Servidor de Aplicación

Servidor de Contenido Estático

Page 9: Step by step developing  with Facebook PHP API by Bruno Kamiche

<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy><allow-access-from domain="*" /></cross-domain-policy>

Ejemplo de archivo crossdomain.xml

Page 10: Step by step developing  with Facebook PHP API by Bruno Kamiche

CREAR LA APLICACIÓN EN FACEBOOK

Page 11: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 12: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 13: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 14: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 15: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 16: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 17: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 18: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 19: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 20: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 21: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 22: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 23: Step by step developing  with Facebook PHP API by Bruno Kamiche

DIFERENCIAS ENTRE UNA APLICACIÓN FBML y IFRAME

Page 24: Step by step developing  with Facebook PHP API by Bruno Kamiche

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 )

Page 25: Step by step developing  with Facebook PHP API by Bruno Kamiche

DESARROLLA TU APLICACIÓN

¡MANOS A LA OBRA!

Page 26: Step by step developing  with Facebook PHP API by Bruno Kamiche

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';?>

Page 27: Step by step developing  with Facebook PHP API by Bruno Kamiche

Archivo de autorización:

<?php@ob_end_flush();@ob_start("ob_gzhandler");@ob_implicit_flush(0);@error_reporting(E_ALL & ~E_NOTICE);@mb_internal_encoding("UTF-8");@mb_http_output("UTF-8");@ini_set("default_charset","UTF-8");include_once 'config.php';include_once 'db/db.php';$db->sql_query("SET NAMES UTF8");@session_start();// the facebook client libraryrequire_once('client/facebook.php');require_once('mainfile.php');if(isset($_POST["fb_sig_user"])) $user=$_POST["fb_sig_user"]; else die();$facebook=new Facebook($api_key, $secret);$db->sql_query("INSERT INTO users(facebookid, datetime) VALUES($user,

UNIX_TIMESTAMP(NOW()))");@ob_end_flush();

?>

Page 28: Step by step developing  with Facebook PHP API by Bruno Kamiche

Archivo de eliminación de Usuario:

<?php@ob_end_flush();@ob_start("ob_gzhandler");@ob_implicit_flush(0);@error_reporting(E_ALL & ~E_NOTICE);@mb_internal_encoding("UTF-8");@mb_http_output("UTF-8");@ini_set("default_charset","UTF-8");// this defines some of your basic setupinclude_once 'config.php';include_once 'db/db.php';$db->sql_query("SET NAMES UTF8");if(isset($_POST["fb_sig_user"])) {

$user=$_POST["fb_sig_user"];$db->sql_query("DELETE FROM users WHERE facebookid=$user");

}@ob_end_flush();

?>

Page 29: Step by step developing  with Facebook PHP API by Bruno Kamiche

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.

Page 30: Step by step developing  with Facebook PHP API by Bruno Kamiche

Activar el uso de UTF-8 en PHP:

@mb_internal_encoding("UTF-8");@mb_http_output("UTF-8");@ini_set("default_charset","UTF-8");

Activar el uso de UTF-8 en MySQL (Lo primero que debes hacer apenas una vez establecida la conexión)

$db->sql_query("SET NAMES UTF8");

Activar el uso de Sesiones (para poder pasar información entre llamadas de un link a otro)

@ini_set("session.use_trans_sid","0");@session_start();

Page 31: Step by step developing  with Facebook PHP API by Bruno Kamiche

Como parsear URLs amigables :

function ProcessParameters() {global $PATHS;

$_SERVER["PATH_INFO"]=$URL=$_SERVER["REQUEST_URI"];$PARAMSTR="";$p=strpos($URL,"?");if($p!==false) {

$_SERVER["QUERY_STRING"]=$PARAMSTR=substr($URL,$p+1);$_SERVER["PATH_INFO"]=$URL=substr($URL,0,$p);

}if(substr($URL,0,1)=="/") $URL=substr($URL,1);if(substr($URL,-1)=="/") $URL=substr($URL,0,strlen($URL)-1);$NPATHS=sizeof($PATHS=split("/", $URL));$NPARAMS=sizeof($PARAMS=split("&",$PARAMSTR));for($nx=0;$nx<$NPARAMS;$nx++) {

$param=split("=",$PARAMS[$nx]);$param[0]=str_replace(".","_",$param[0]);if(isset($param[1])) $_GET[$param[0]]=htmlspecialchars_decode(urldecode($param[1])); else $_GET[$param[0]]="";

}return($PATHS[0]);

}

Page 32: Step by step developing  with Facebook PHP API by Bruno Kamiche

$PATHS=array();$opt=ProcessParameters();switch($opt) {

case "urlamigable1":app_funcion1();break;

case "urlamigable2":app_funcion2();break;

case "":app_main();break;

default:echo "<fb:redirect url=\"{$appurl}\" />";die();

}

Page 33: Step by step developing  with Facebook PHP API by Bruno Kamiche

Como crear un “Profile BOX”:

<?phpfunction app_setinfobox($user, $htmlw="", $htmln="") {

// narrow : 184 * 250// wide : 380 * Xtry {

$result=$facebook->api_client->profile_setFBML(NULL, $user,

"<fb:wide>".$htmlw."</fb:wide>"."<fb:narrow>".$htmln."</fb:narrow>", NULL, "", "<fb:narrow>".$htmln."</fb:narrow>");

} catch (Exception $e) {}

}?>

Page 34: Step by step developing  with Facebook PHP API by Bruno Kamiche

Como publicar contenido en el News Feed del usuario y sus amigos utilizando Javascript:

<script type='text/javascript'>var attachment = {"name":"<Nombre de tu Aplicación>","href":"{$appurl}",

"caption":"{*actor*} <mensaje>.", "description":"<texto que quieres publicar>", "media":[{"type":"image",

"src":"<url de la imagen>","href":"{$appurl}"}] };

var actionLinks = [{ "text": "Texto de Action Link", "href": "{$appurl}"}];Facebook.streamPublish("",attachment,actionLinks,null,"<titulo para escribir

contenido>");</script>

Page 35: Step by step developing  with Facebook PHP API by Bruno Kamiche

Como publicar en el News Feed utilizando FBML:

En la aplicación se deberá mostrar el siguiente contenido:

<form fbtype="feedStory" id="publishformdata" action="<url del form>"><input type="hidden" name="<variable>" value="<valor>"/><input type="submit" label="Presiona aquí para continuar" /> </form>

Page 36: Step by step developing  with Facebook PHP API by Bruno Kamiche

Programa para Procesar el Feed Form:

<?phpinclude(“config.php”);// Recibir y validar los parametros en $_POST

$template=<id del template definido>; // *titulo* *mensaje*

$title="<titulo del mensaje>";$mensaje="<cuerpo del mensaje>";$images=array(

array("src"=>"<url de la imagen>","href"=>"{$appurl}"));

$tokens=array( "images"=>$images,

"titulo"=>$title, "mensaje"=>$mensaje

);$feed = array('template_data' => $tokens, 'template_id' => $template ); $publish = array('method'=> 'feedStory', 'content' => array( 'feed' => $feed, 'next' =>

"{$appurl}")); echo json_encode($publish);

?>

Page 37: Step by step developing  with Facebook PHP API by Bruno Kamiche

Como utilizar el Editor de Templates

Page 38: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 39: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 40: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 41: Step by step developing  with Facebook PHP API by Bruno Kamiche
Page 42: Step by step developing  with Facebook PHP API by Bruno Kamiche

¡Gracias!

Bruno KámicheInventarte.netLima – Perú

[email protected]