YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Desenvolvimento de aplicativos para o Facebook

Desenvolvimento de aplicativos para o Facebook

Jorge [email protected]

Ricardo Rodrigues [email protected]

Maio/2011

Apresentação de disciplina:Desenvolvimento de Aplicações na WebProfessor Hugo Paredes

Page 2: Desenvolvimento de aplicativos para o Facebook

Por que desenvolver (ou não) aplicações para o Facebook?

Obs. Respostas dos alunos

“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.”Katy Teixeira

“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

Page 3: Desenvolvimento de aplicativos para o Facebook

Audiência Global

Audiência Global : 667,020,540

Fonte: checkfacebook.com

3/18

Page 4: Desenvolvimento de aplicativos para o Facebook

Fonte: checkfacebook.com

Portugal no Facebook

Page 5: Desenvolvimento de aplicativos para o Facebook

Por onde começar?

Facebook Developershttp://developers.facebook.com/

Facebook Documentationhttp://developers.facebook.com/docs/

Facebook Forumhttp://forum.developers.facebook.net/

Facebook Bloghttp://developers.facebook.com/blog/

Facebook Showcasehttp://developers.facebook.com/showcase/

5/18

Page 6: Desenvolvimento de aplicativos para o Facebook

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

Page 7: Desenvolvimento de aplicativos para o Facebook

Onde vender as aplicações que desenvolvi?

Appbidhttp://www.appbid.com/

Sitepointmarkethttp://sitepointmarket.com/

7/18

Page 8: Desenvolvimento de aplicativos para o Facebook

A nossa 1ª aplicação

http://developers.facebook.com8/18

Page 9: Desenvolvimento de aplicativos para o Facebook

My Apps, Login

[+Set Up New App]

9/18

Page 10: Desenvolvimento de aplicativos para o Facebook

OOPS!

O Facebook é muito chato e está sempre a mudar.

10/18

Page 11: Desenvolvimento de aplicativos para o Facebook

Projecto PLAYER

Login = App ID + App Secret 11/18

Page 12: Desenvolvimento de aplicativos para o Facebook

<?php require_once ("facebook.php");

// Instanciar aplicação $facebook = new Facebook(

array('appId' => xxxxxxx',   'secret' => xxxxxxxx',   'cookie' => true));

$session = $facebook->getSession(); //API baseada em sessoes if ($session) {   

try   {     

$uid = $facebook->getUser();     $me = $facebook->api('/me');   

}   catch (FacebookApiException $e)   {     

error_log($e);   }

}

// Vamos ter de gerar o URLde login ou logout dependendo do estado de sessão do utilizador if ($me) {   

$logoutUrl = $facebook->getLogoutUrl(); } else {   

$loginUrl = $facebook->getLoginUrl(); }

12/18

Page 13: Desenvolvimento de aplicativos para o Facebook

<!doctype html> <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) <?php echo $_REQUEST['access_token'];?> } else { // utilizador autenticado mas não deu permissões }

} else {// user is not logged in }

} , { perms:'user_groups' } //pedir para ler os grupos de um utilizador); </script> </head>

13/18

Page 14: Desenvolvimento de aplicativos para o Facebook

if ($me){

<a href=“echo $logoutUrl; <img src=http://static.ak.fbcdn.net/rsrc.php/z2Y31/hash/cxrz4k7j.gif></a>}else{

<a href=“echo $loginUrl;“ <img src=http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif></a>

//Sacar informação sobre os grupos$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,https://graph.facebook.com/".$session['uid']."/groups?scope=user_groups&access_token=".$session['access_token']); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec ($ch );curl_close($ch);

Outras permissões: user_about_me ,user_activities, user_birthday ,birthday_date property,user_checkins user_education_history,user_events , user_hometown , user_interests, user_likes,user_location, user_notes, user_online_presence ,user_photo_video_tags,user_photos , user_relationships, user_relationship_details,user_religion_politics ,user_status, user_videos , user_website, user_work_history, email , read_friendlists, read_insights, read_mailbox,read_requests, read_stream, xmpp_login, ads_management

14/18

Page 15: Desenvolvimento de aplicativos para o Facebook

JSONQuais são os dados publicamente acessíveis?

Array((...)

[83] => {

"id":"100001097790346","name":"Bruno Vieira","first_name":"Bruno","last_name":"Vieira","link":"http:\/\/www.facebook.com\/people\/Bruno-Vieira\/

100001097790346","gender":"male","locale":"pt_PT“

})

Podem converter para um objecto, ou para um array, com json_decodeArray( [0] => (...)

[1] => Array ( [0] => 100001097790346 [1] => Bruno Vieira [2] => 175 ))

15/18

Page 16: Desenvolvimento de aplicativos para o Facebook

Graph APIhttps://graph.facebook.com/331218348435/attending?access_token=....

{

"data": [

{

"name": "Sergio Dagach",

"id": "707855857",

"rsvp_status": "attending"

},

{

"name": "Tama Taylor",

"id": "567460175",

"rsvp_status": "attending"

},

{

"name": "Brian Thornton",

"id": "1695410038",

"rsvp_status": "attending"

},(…)

]

}

16/18

Page 17: Desenvolvimento de aplicativos para o Facebook

curl_multi! :D//Temos um array de IDs de pessoas que não especificaram o país, tirado da BD //Vamos construir um array de URLs (FACEBOOK GRAPH API) para passar ao cURL foreach ($bdArray as $k => $bd)  $urlArray[]="http://graph.facebook.com/$bd";

//Temos de construir um array de handles / file descriptors / sockets (MULTITHREADED) foreach($urlArray as $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($handleArray as $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 JSONforeach($handleArray as $k => $h)  $dataArray[$k] = curl_multi_getcontent($h); foreach($handleArray as $k => $h)  curl_multi_remove_handle($mh,$h);  curl_multi_close($mh);        //Inferir país a partir da linguagemforeach ($handleArray as $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 inferidos para quem não especificou um paísforeach($idArray as $k=>$i) { //corrigir a BD }

17/18

Page 18: Desenvolvimento de aplicativos para o Facebook

X/FBML

18/18

Page 19: Desenvolvimento de aplicativos para o Facebook

Desenvolvimento de aplicativos para o Facebook

Jorge [email protected]

Ricardo Rodrigues [email protected]

Maio/2011

Apresentação de disciplina:Desenvolvimento de Aplicações na WebProfessor Hugo Paredes


Related Documents