Apresentação sobre desenvolvimento de aplicativos para o Facebook na aula de Desenvolvimento de Aplicações na Web na Universidade Trás-os-Montes e Alto Douro (UTAD).
1. Desenvolvimento de aplicativos para o Facebook Apresentação de disciplina: Desenvolvimento de Aplicações na Web Professor Hugo Paredes Jorge Lima jlima@utad.pt Ricardo Rodrigues Nunes rrnunes@utad.pt Maio/2011
2. Por que desenvolver (ou não) aplicações para o Facebook? “Porque se torna muito mais fácil divulgar esta aplicação, uma vez que as pessoas estão em constante comunicação umas com as outras.” KatyTeixeira “Facebook é cada vez mais popular .” Fábio Escaleira “Porque o facebook tornou-se uma forma de publicidade quase gratuita e muito eficiente.” Miguel Araujo “um utilizador usar a aplicação e partilhar no mural, vários utilizadores aderem, ou seja, é simples aumentar a popularidade da aplicação.” Cesar Meira 2/18 Obs. Respostas dos alunos
5. Por onde começar? FacebookDevelopers http://developers.facebook.com/ FacebookDocumentation http://developers.facebook.com/docs/ FacebookForum http://forum.developers.facebook.net/ FacebookBlog http://developers.facebook.com/blog/ FacebookShowcase http://developers.facebook.com/showcase/ 5/18
6. Tipos de Aplicações Dois tipos diferentes de aplicações Facebook: aplicação desktop aplicação do web Três maneiras diferentes de uma aplicação interagir com o Facebook: uma aplicação externa interagindo por meio de uma API remota um IFRAME dentro do próprio site utilizando a linguagem de marcação do Facebook (FBML) 6/18
7. Onde vender as aplicações que desenvolvi? Sitepointmarket http://sitepointmarket.com/ Appbid http://www.appbid.com/ 7/18
8. A nossa 1ª aplicação http://developers.facebook.com 8/18
13. <!doctypehtml> <html> <head> <title>Exemplo de login do Facebook</title> <script type="text/javascript"> FB.login( function(response) { if(response.session) { if(response.perms) { // utilizador estáautenticado e deu permissões. // perms = CSV (lista de permissoes separada por virgulas) <?phpecho $_REQUEST['access_token'];?> } else { // utilizador autenticado mas não deu permissões } } else { // userisnotloggedin } }, {perms:'user_groups'} //pedir para ler os grupos de um utilizador ); </script> </head> 13/18
15. JSON Quais são os dados publicamente acessíveis? Array ( (...) [83] => { "id":"100001097790346", "name":"Bruno Vieira", "first_name":"Bruno", "last_name":"Vieira", "link":"http:www.facebook.compeopleBruno-Vieira100001097790346", "gender":"male", "locale":"pt_PT“ } ) Podem converter para um objecto, ou para um array, com json_decode Array ( [0] => (...) [1] => Array ( [0] => 100001097790346 [1] => Bruno Vieira [2] => 175 ) ) 15/18
17. curl_multi! :D //Temos umarray de IDs de pessoas que não especificaram o país, tirado da BD //Vamos construir umarray de URLs (FACEBOOK GRAPH API) para passar ao cURL foreach($bdArrayas$k=>$bd) $urlArray[]="http://graph.facebook.com/$bd"; //Temos de construir umarray de handles / file descriptors / sockets (MULTITHREADED) foreach($urlArrayas$k=>$u) { $h=curl_init(); curl_setopt($h,CURLOPT_URL,$u); curl_setopt($h,CURLOPT_HEADER,0); curl_setopt($h,CURLOPT_RETURNTRANSFER,1); $handleArray[]=$h; } $mh=curl_multi_init(); foreach($handleArrayas$k=>$h)curl_multi_add_handle($mh,$h); do curl_multi_exec($mh,$running); while($running>0); //Espera que todos acabem de correr //Array preenchido com resultados das chamadas à Graph API, em JSON foreach($handleArrayas$k=>$h) $dataArray[$k]=curl_multi_getcontent($h); foreach($handleArrayas$k=>$h) curl_multi_remove_handle($mh,$h); curl_multi_close($mh); //Inferir país a partir da linguagem foreach ($handleArrayas$k=>$d) { if(strlen($d)>0) $tempArray=json_decode($d,true); if(($tempArray['locale']=="pt_PT")$idArray[]=array($tempArray['id'],$tempArray['name'],157); } //Array com países inferidospara quem não especificou um país foreach($idArray as $k=>$i){ //corrigir a BD } 17/18
19. Desenvolvimento de aplicativos para o Facebook Apresentação de disciplina: Desenvolvimento de Aplicações na Web Professor Hugo Paredes Jorge Lima jlima@utad.pt Ricardo Rodrigues Nunes rrnunes@utad.pt Maio/2011