Desenvolvimento de aplicativos para o Facebook
-
Upload
ricardo-rodrigues-nunes -
Category
Education
-
view
16.190 -
download
1
description
Transcript of 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
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
Audiência Global
Audiência Global : 667,020,540
Fonte: checkfacebook.com
3/18
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
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
Onde vender as aplicações que desenvolvi?
Appbidhttp://www.appbid.com/
Sitepointmarkethttp://sitepointmarket.com/
7/18
A nossa 1ª aplicação
http://developers.facebook.com8/18
My Apps, Login
[+Set Up New App]
9/18
OOPS!
O Facebook é muito chato e está sempre a mudar.
10/18
Projecto PLAYER
Login = App ID + App Secret 11/18
<?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
<!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
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
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
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
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
X/FBML
18/18
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