SlideShare uma empresa Scribd logo
Conhecendo a API do
     Facebook
INTRODUÇÃO
• O objetivo dessa apresentação é abordar as
  diversas opções disponíveis na API do facebook.

• API rica e bastante consistente que permite
  interações com diversas plataformas e a criação
  de aplicativos diversos.

• O Facebook disponibiliza o SDK em PHP, JS, IOS e
  Android.
SDK PHP
(utilizando a API do Facebook com PHP)
O que é?
• SDK php fornece ricas configurações e funcionalidades no
  server-side para acessar funcionalidades do Facebook
  através de chamadas da API.

• Simplifica o processo de autenticação do usuário e o
  acesso do mesmo ao seu aplicativo.

• O SDK do PHP pode trabalhar em conjunto com o SDK
  JavaScript para fornecer gerenciamento de sessão entre
  cliente e app.
SDK PHP -> Instalando e Inicializando
1º Passo:
• Necessário registrar a sua aplicação em
   https://developers.facebook.com/apps/

OBS: O registro da aplicação fornecerá um APP ID e uma APP
  SECRET necessárias para iniciar o SDK.

2º Passo:
• Fazer o download do SDK PHP no endereço
   https://github.com/facebook/php-sdk
SDK PHP -> Instalando e Inicializando
3º Passo:
• Incluir o arquivo facebook.php na sua aplicação.

4º Passo:
• Usar o SDK instanciando um novo objeto "new Facebook"
   com , no mínimo, a APP ID e APP SECRET.
Implementando...
require 'include/libs/facebook/src/facebook.php';

/*AppId e AppSecret*/
$appId = '299089040140399';
$appsecret = 'e42c3ee37ca90111904674d46a987e91';

/*Url do app no facebook */
$canvas_page = 'http://apps.facebook.com/estatisticas-virtual/';

/*Permissões separadas por virgula*/
$perms =
“publish_stream,publish_actions, user_online_presence, user_photos, offline_access, read_friendlists, read_stream, manage_frien
dlists,user_likes,friends_likes,user_videos”;

OBS: Lista de permissões disponíveis em http://developers.facebook.com/docs/reference/api/permissions/

/*Cria uma instância com o AppId e AppSecret*/
$facebook = new Facebook(array(
 'appId' => $appId,
 'secret' => $appsecret,
 'cookie' => true
));
Implementando...
/*Url de redirecionamento*/
/*Declaro as variáveis que serão utilizadas no processo de autenticação!A variável $auth_url será utilizada mais na frente*/
$auth_url = "http://www.facebook.com/dialog/oauth?client_id=" . $appId .
       "&redirect_uri=" . urlencode($canvas_page) . "&scope=" . $perms;

/* Recupera os dados passados pelo facebook*/
$signed_request = $_REQUEST["signed_request"];

/*Guarda alguns dados da variável anterior em outras variáveis*/
list($encoded_sig, $payload) = explode('.', $signed_request, 2);

/* Decodifica o json com os dados do usuário*/
$dadosPermissao = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

/* Checo se o usuário deu permissão
Se não , redireciona para a tela que pede as permissões
Se sim, redireciona pra onde você quer/*
if (empty($dadosPermissao["user_id"]))
{
   echo("<script>top.location.href='" . $auth_url . "';</script>");
}
else
{
?>
//entra html do app
<?php
}
?>

OBS: Alguns conceitos serão explicados nos slides mais a frente.Utilize esse código para se basear e entender o processo.Avance
e retorne para cá sempre que necessário!
Facebook Object
api
Chamar um método API Gráfico, Consulta FQL, ou (obsoleto) API REST usando o SDK PHP.

getAccessToken
Obter o token de acesso atual que está sendo usado pelo SDK.

getApiSecret
Obter a AppSecret que está sendo usado pelo SDK.

getAppId
Obter o AppId que está sendo usando pelo SDK

getLoginStatusUrl
Returna um URL com base no status de login do usuário no facebook.

getLoginUrl
Obter uma URL que o usuário pode clicar para logar, autorizar o app e ser redirecionado de volta para o aplicativo.

getLogoutUrl
Este método retorna uma URL que, quando clicado pelo usuário, irá desconectá-lo da sua sessão do Facebook e, em seguida, redirecioná-lo de volta para sua aplicação.

getSignedRequest
Obter o pedido atual assinado que está sendo usado pelo SDK.

getUser
Esse método retorna o ID de usuário do Facebook do usuário atual, ou 0 se não há usuário logado.

setAccessToken
Defina o token de acesso atual que está sendo usado pelo SDK.

setApiSecret
Definir o segredo App que o SDK está usando atualmente.

setAppId
Defina o ID App que o SDK está usando atualmente.

setFileUploadSupport
Definir o suporte a arquivos de upload no SDK.

useFileUploadSupport
Obter se o apoio de upload de arquivo tenha sido habilitado no SDK.
FacebookApiException
getResult
• Obter o objeto que é o resultado do erro ou exceção retornada pelo
   servidor.

getType
• Obter o tipo de erro ou exceção, por exemplo, OAuthException .
Autenticação e Autorização
• O SDK do PHP pode ser usado para dar suporte ao registro e
  login para o seu site usando a conta dos usuários do
  Facebook.

• No lado do servidor, o SDK do PHP fornece métodos auxiliares
  para simplesmente fazer o login, solicitar permissões e logout.

• Essa funcionalidade é fornecida pelo Facebook :: getUser ()
  , Facebook :: getLoginUrl () e Facebook :: getLogoutUrl ()
Signed_request
• O parâmetro signed_request é utilizado para compartilhar
  informações entre o Facebook e o aplicativo em diferentes situações:

• A signed_request é passado para Apps em Facebook.com quando
  eles são carregados no ambiente Facebook.

• A signed_request é passada para qualquer aplicativo que tenha
  registrado uma chamada de retorno desautorizado na App
  Desenvolvedor sempre que um determinado usuário remove o
  aplicativo usando o Painel App.

• A signed_request é passado para aplicativos que usam o Plugin de
  registro sempre que um usuário se registra com sucesso a sua app.
Signed_request
•   O parâmetro signed_request é a concatenação de uma cadeia de assinatura HMAC
    SHA-256 , um ponto ( . ) e um base64url codificado objeto JSON.

vlXgu64BQGFSQrY0ZcJBZASMvYvTHu9GQ0YM9rjPSso
.
eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsIjAiOiJwYXlsb2FkIn0

O JSON codificado contém os seguintes campos:
user , algorithm , issued_at, user_id , oauth_token, expires , app_data , page
    , profile_id

OBS:Mais informações em
   http://developers.facebook.com/docs/authentication/signed_request/
Entendendo alguns conceitos...
Canvas page:

•   Canvas é literalmente uma tela em branco
    dentro do Facebook onde o aplicativo é
    carregado.

•   Nesse espaço você carrega o seu
    aplicativo, que pode ser um código
    html, javascript, css, etc.

•   Quando um usuário solicita a página
    Canvas, a URL é carregada dentro de um
    iframe na página. Isso resulta em sua
    aplicação que está sendo exibido dentro do
    padrão Facebook.

•   Os arquivos da sua aplicação deverão estar
    hospedados em outro servidor.Ao registrar o
    aplicativo, a URL canvas deve ser o endereço
    de onde estão hospedados os seus arquivos.

•   O facebook irá fornecer um Canvas Page que
    é o endereço da sua aplicação no Facebook!
O Facebook e suas conexões:
               Utilizando a GRAPH API
•   O Facebook vem trocando sua antiga API, chamada
    REST, baseada em requisições HTTP com resposta
    em XML, pela Graph API, onde todos os elementos
    básicos da rede social são representados em
    páginas diferentes e cada elemento possui sub-
    elementos criando grafos, que deram origem ao
    nome da API.

•   https://graph.facebook.com/me: Retorna os dados
    do usuário atual

•   https://graph.facebook.com/me/picture: Retorna a
    imagem de exibição do usuário atual

•   https://graph.facebook.com/me/friends: Retorna
    todos os amigos do usuário atual

•   Todas as requisições feitas retornam um objeto em
    formato JSON!
$facebook->api();
•   O SDK php disponibiliza o método Api para acesso ao banco de dados do
    facebook!Esse método chama a Graph Api do facebook, uma FQL ou a REST API
    (deprecated) .

•   Para chamar a Graph Api, o primeiro parâmetro a ser passado é o caminho.Para
    fazer um consulta FQL ou a REST API, o parâmetro passado deve ser um array.

     $facebook->api($path, $method, $params);
     $path = O caminho para o pedido.Para acessar as informações do usuário logado, por
     exemplo, usa-se "/me"

     $method (opcional)= Método HTTP requisitado.Pode ser GET, POST ou DELETE.

     $params = Parâmetros específicos para o método que se está chamando.Passado no
     formato de um array associativo.

     $user_profile = $facebook->api('/me','GET');
         echo "Name: " . $user_profile['name'];
FQL QUERIES
•   O objeto FQL permite a execução de consultas FQL usando a GRAPH API.O
    Facebook Query Language, ou FQL, permite que você use uma interface SQL para
    consultar os dados expostos pelo Graph API . Ele fornece algumas funcionalidades
    avançadas não disponíveis na GRAPH API, incluindo consultas em lotes em uma
    única chamada.

•   A documentação de todas as tabelas do facebook estão no endereço
    http://developers.facebook.com/docs/reference/fql/

•   Ao contrário da SQL, o FQL disponibiliza as funções now () , strlen () , substr () e
    strpos () .
FQL - Multi Consultas
• "query1":"SELECT uid, rsvp_status FROM event_member
  WHERE eid=12345678“

• "query2":"SELECT name, url, pic FROM profile WHERE id
  IN (SELECT uid FROM #query1)"
GRAPH API com PHP SDK
• Existem alguns parâmetros disponíveis para filtrar as
  consultas:

limit, offset - https://graph.facebook.com/me/likes?limit=3
until, since - https://graph.facebook.com/search?until=yesterday&q=orange
Datas
• Os campos de datas são retornados no formato ISO-
  8601.É possível modificar o formato passando o
  date_format como parâmetro.As opções disponíveis são
  iguais à função date() do php.
Graph Api - Introspecção
• A Graph API suporta introspecção de objetos, permitindo
  que todas as conexões do objeto sejam acessadas.

• O recurso a introspecção é uma forma útil e extensível
  para encontrar todas as coisas que os usuários estão
  conectados.

• O Parâmetro a ser passado é o metadata = 1
GRAPH API - Busca
• É possível acessar todos os objetos da GRAPH API.

• O formato é:

  https://graph.facebook.com/search?q=QUERY&type=OBJ
  ECT_TYPE
Graph Api Explorer
• O facebook disponibiliza
  o aplicativo GRAPH API
  FACEBOOK.

• Ele permite que
  consultas sejam
  realizadas, retornando o
  JSON respectivo.

Mais conteúdo relacionado

Mais procurados

adv 492 final
adv 492 finaladv 492 final
adv 492 final
Andrew Banks
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
darcybenavides
 
Trabajo final de infotecnologia para el aprendizaje la web 2.0
Trabajo final de infotecnologia para el aprendizaje la web 2.0Trabajo final de infotecnologia para el aprendizaje la web 2.0
Trabajo final de infotecnologia para el aprendizaje la web 2.0
CatalinoContreras
 
Digital 2022 Brazil (February 2022) v02
Digital 2022 Brazil (February 2022) v02Digital 2022 Brazil (February 2022) v02
Digital 2022 Brazil (February 2022) v02
DataReportal
 
Segurança na Internet
Segurança na InternetSegurança na Internet
Segurança na Internet
Agrupamento de Escolas da Batalha
 
1. evolución de la web
1. evolución de la web1. evolución de la web
1. evolución de la web
greslyecu
 
Google meet
Google meetGoogle meet
Google meet
Hozmara Torres
 
Facebook: cuidados a ter
Facebook: cuidados a terFacebook: cuidados a ter
Facebook: cuidados a ter
Agrupamento de Escolas da Batalha
 
Mashup
MashupMashup
Mashup
rdfioravante
 
Digital 2022: Essential Facebook Stats for Q1 2022 v01
Digital 2022: Essential Facebook Stats for Q1 2022 v01Digital 2022: Essential Facebook Stats for Q1 2022 v01
Digital 2022: Essential Facebook Stats for Q1 2022 v01
DataReportal
 
Advantages of SharePoint Online
Advantages of SharePoint OnlineAdvantages of SharePoint Online
Advantages of SharePoint Online
Rishabh Software
 
Trabajo final de Infotecnologia
Trabajo final de InfotecnologiaTrabajo final de Infotecnologia
Trabajo final de Infotecnologia
Licely Germosen
 
Les opérations événementielles à l'ère du digital
Les opérations événementielles à l'ère du digitalLes opérations événementielles à l'ère du digital
Les opérations événementielles à l'ère du digital
Marion Tessier
 
redes sociales
redes socialesredes sociales
redes sociales
karendayana58
 
#compublique Connaître et développer les outils de mise en accessibilité de s...
#compublique Connaître et développer les outils de mise en accessibilité de s...#compublique Connaître et développer les outils de mise en accessibilité de s...
#compublique Connaître et développer les outils de mise en accessibilité de s...
Cap'Com
 
communiquer-reseaux-sociaux.pptx
communiquer-reseaux-sociaux.pptxcommuniquer-reseaux-sociaux.pptx
communiquer-reseaux-sociaux.pptx
olivier
 
Accediendo a los Contenidos del AVA
Accediendo a los Contenidos del AVAAccediendo a los Contenidos del AVA
Accediendo a los Contenidos del AVA
SistemadeEstudiosMed
 
Las redes sociales y los niños menores
Las redes sociales y los niños menoresLas redes sociales y los niños menores
Las redes sociales y los niños menores
joaquin pittaro
 
Navegar por Internet de forma segura
Navegar por Internet de forma seguraNavegar por Internet de forma segura
Navegar por Internet de forma segura
Janeth Esmeralda Alvarez Hidalgo
 
21 idées pour animer votre page Facebook
21 idées pour animer votre page Facebook21 idées pour animer votre page Facebook
21 idées pour animer votre page Facebook
Sébastien Bailly
 

Mais procurados (20)

adv 492 final
adv 492 finaladv 492 final
adv 492 final
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
 
Trabajo final de infotecnologia para el aprendizaje la web 2.0
Trabajo final de infotecnologia para el aprendizaje la web 2.0Trabajo final de infotecnologia para el aprendizaje la web 2.0
Trabajo final de infotecnologia para el aprendizaje la web 2.0
 
Digital 2022 Brazil (February 2022) v02
Digital 2022 Brazil (February 2022) v02Digital 2022 Brazil (February 2022) v02
Digital 2022 Brazil (February 2022) v02
 
Segurança na Internet
Segurança na InternetSegurança na Internet
Segurança na Internet
 
1. evolución de la web
1. evolución de la web1. evolución de la web
1. evolución de la web
 
Google meet
Google meetGoogle meet
Google meet
 
Facebook: cuidados a ter
Facebook: cuidados a terFacebook: cuidados a ter
Facebook: cuidados a ter
 
Mashup
MashupMashup
Mashup
 
Digital 2022: Essential Facebook Stats for Q1 2022 v01
Digital 2022: Essential Facebook Stats for Q1 2022 v01Digital 2022: Essential Facebook Stats for Q1 2022 v01
Digital 2022: Essential Facebook Stats for Q1 2022 v01
 
Advantages of SharePoint Online
Advantages of SharePoint OnlineAdvantages of SharePoint Online
Advantages of SharePoint Online
 
Trabajo final de Infotecnologia
Trabajo final de InfotecnologiaTrabajo final de Infotecnologia
Trabajo final de Infotecnologia
 
Les opérations événementielles à l'ère du digital
Les opérations événementielles à l'ère du digitalLes opérations événementielles à l'ère du digital
Les opérations événementielles à l'ère du digital
 
redes sociales
redes socialesredes sociales
redes sociales
 
#compublique Connaître et développer les outils de mise en accessibilité de s...
#compublique Connaître et développer les outils de mise en accessibilité de s...#compublique Connaître et développer les outils de mise en accessibilité de s...
#compublique Connaître et développer les outils de mise en accessibilité de s...
 
communiquer-reseaux-sociaux.pptx
communiquer-reseaux-sociaux.pptxcommuniquer-reseaux-sociaux.pptx
communiquer-reseaux-sociaux.pptx
 
Accediendo a los Contenidos del AVA
Accediendo a los Contenidos del AVAAccediendo a los Contenidos del AVA
Accediendo a los Contenidos del AVA
 
Las redes sociales y los niños menores
Las redes sociales y los niños menoresLas redes sociales y los niños menores
Las redes sociales y los niños menores
 
Navegar por Internet de forma segura
Navegar por Internet de forma seguraNavegar por Internet de forma segura
Navegar por Internet de forma segura
 
21 idées pour animer votre page Facebook
21 idées pour animer votre page Facebook21 idées pour animer votre page Facebook
21 idées pour animer votre page Facebook
 

Destaque

Gestao 2.0 para Fundação Dom Cabral
Gestao 2.0 para Fundação Dom CabralGestao 2.0 para Fundação Dom Cabral
Gestao 2.0 para Fundação Dom Cabral
Jose Claudio Terra
 
Api facebook
Api facebookApi facebook
Api facebook
Felipe Costa
 
Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
FATEC São José dos Campos
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e Facebook
Luiz Arthur
 
Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
FATEC São José dos Campos
 
Facebook API O que é possível ser feito agora?
Facebook API O que é possível ser feito agora? Facebook API O que é possível ser feito agora?
Facebook API O que é possível ser feito agora?
Pivot Produtora
 
GraphQL - APIs mais robustas e flexíveis
GraphQL - APIs mais robustas e flexíveisGraphQL - APIs mais robustas e flexíveis
GraphQL - APIs mais robustas e flexíveis
Bruno Lemos
 
Extração de Dados do Facebook com o NetVizz
Extração de Dados do Facebook com o NetVizzExtração de Dados do Facebook com o NetVizz
Extração de Dados do Facebook com o NetVizz
Laboratório de Políticas Públicas Participativas
 
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmicaPepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica
FATEC São José dos Campos
 
import pybr12: experiencias de inclusión en la última PyCon Brazil
import pybr12: experiencias de inclusión en la última PyCon Brazilimport pybr12: experiencias de inclusión en la última PyCon Brazil
import pybr12: experiencias de inclusión en la última PyCon Brazil
FATEC São José dos Campos
 
Python for zombies (very basic level)
Python for zombies (very basic level)Python for zombies (very basic level)
Python for zombies (very basic level)
FATEC São José dos Campos
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
Pedro Valente
 
FACEBOOK INSIGHTS E COMO MONTAR SEU RELATÓRIO
FACEBOOK INSIGHTS E COMO MONTAR SEU RELATÓRIOFACEBOOK INSIGHTS E COMO MONTAR SEU RELATÓRIO
FACEBOOK INSIGHTS E COMO MONTAR SEU RELATÓRIO
Renato Melo
 
Hackeando Dados públicos com python
Hackeando Dados públicos com pythonHackeando Dados públicos com python
Hackeando Dados públicos com python
FATEC São José dos Campos
 
Facebook Page Insights - Glossary Terms / Glossário de Termos
Facebook Page Insights - Glossary Terms / Glossário de TermosFacebook Page Insights - Glossary Terms / Glossário de Termos
Facebook Page Insights - Glossary Terms / Glossário de Termos
Paulo Os Vilarinho
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
Júlio de Lima
 
Api do Facebook
Api do FacebookApi do Facebook
Api do Facebook
inovarandre
 
Passo a Passo - Seekr Monitor, SAC e CRM
Passo a Passo - Seekr Monitor, SAC e CRMPasso a Passo - Seekr Monitor, SAC e CRM
Passo a Passo - Seekr Monitor, SAC e CRM
Seekr - Gestão e Monitoramento de Mídias Sociais
 
Cientista da computacao usando python
Cientista da computacao usando pythonCientista da computacao usando python
Cientista da computacao usando python
Jean Lopes
 
Conhecendo a estrutura do Odoo
Conhecendo a estrutura do OdooConhecendo a estrutura do Odoo
Conhecendo a estrutura do Odoo
Danimar Ribeiro
 

Destaque (20)

Gestao 2.0 para Fundação Dom Cabral
Gestao 2.0 para Fundação Dom CabralGestao 2.0 para Fundação Dom Cabral
Gestao 2.0 para Fundação Dom Cabral
 
Api facebook
Api facebookApi facebook
Api facebook
 
Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e Facebook
 
Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
 
Facebook API O que é possível ser feito agora?
Facebook API O que é possível ser feito agora? Facebook API O que é possível ser feito agora?
Facebook API O que é possível ser feito agora?
 
GraphQL - APIs mais robustas e flexíveis
GraphQL - APIs mais robustas e flexíveisGraphQL - APIs mais robustas e flexíveis
GraphQL - APIs mais robustas e flexíveis
 
Extração de Dados do Facebook com o NetVizz
Extração de Dados do Facebook com o NetVizzExtração de Dados do Facebook com o NetVizz
Extração de Dados do Facebook com o NetVizz
 
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmicaPepe Legal Python e Babalu MongoDB, uma dupla dinâmica
Pepe Legal Python e Babalu MongoDB, uma dupla dinâmica
 
import pybr12: experiencias de inclusión en la última PyCon Brazil
import pybr12: experiencias de inclusión en la última PyCon Brazilimport pybr12: experiencias de inclusión en la última PyCon Brazil
import pybr12: experiencias de inclusión en la última PyCon Brazil
 
Python for zombies (very basic level)
Python for zombies (very basic level)Python for zombies (very basic level)
Python for zombies (very basic level)
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
 
FACEBOOK INSIGHTS E COMO MONTAR SEU RELATÓRIO
FACEBOOK INSIGHTS E COMO MONTAR SEU RELATÓRIOFACEBOOK INSIGHTS E COMO MONTAR SEU RELATÓRIO
FACEBOOK INSIGHTS E COMO MONTAR SEU RELATÓRIO
 
Hackeando Dados públicos com python
Hackeando Dados públicos com pythonHackeando Dados públicos com python
Hackeando Dados públicos com python
 
Facebook Page Insights - Glossary Terms / Glossário de Termos
Facebook Page Insights - Glossary Terms / Glossário de TermosFacebook Page Insights - Glossary Terms / Glossário de Termos
Facebook Page Insights - Glossary Terms / Glossário de Termos
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
 
Api do Facebook
Api do FacebookApi do Facebook
Api do Facebook
 
Passo a Passo - Seekr Monitor, SAC e CRM
Passo a Passo - Seekr Monitor, SAC e CRMPasso a Passo - Seekr Monitor, SAC e CRM
Passo a Passo - Seekr Monitor, SAC e CRM
 
Cientista da computacao usando python
Cientista da computacao usando pythonCientista da computacao usando python
Cientista da computacao usando python
 
Conhecendo a estrutura do Odoo
Conhecendo a estrutura do OdooConhecendo a estrutura do Odoo
Conhecendo a estrutura do Odoo
 

Semelhante a Conhecendo API do Facebook

Desenvolvimento de Aplicativos para Facebook
Desenvolvimento de Aplicativos para FacebookDesenvolvimento de Aplicativos para Facebook
Desenvolvimento de Aplicativos para Facebook
Bruno Leite
 
Facebook Platform - Hack Thursday CW 40
Facebook Platform - Hack Thursday CW 40Facebook Platform - Hack Thursday CW 40
Facebook Platform - Hack Thursday CW 40
William Dias
 
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPyDesenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
antonio sérgio nogueira
 
Desenvolvimento de Aplicações para o Facebook em ASP .NET
Desenvolvimento de Aplicações para o Facebook em ASP .NETDesenvolvimento de Aplicações para o Facebook em ASP .NET
Desenvolvimento de Aplicações para o Facebook em ASP .NET
Comunidade NetPonto
 
Servidor de Aplicação Web: CherryPy - Python
Servidor de Aplicação  Web: CherryPy - PythonServidor de Aplicação  Web: CherryPy - Python
Servidor de Aplicação Web: CherryPy - Python
antonio sérgio nogueira
 
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Thyago Maia
 
PHP nas Mídias Sociais
PHP nas Mídias SociaisPHP nas Mídias Sociais
PHP nas Mídias Sociais
Jota Júnior
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Thyago Maia
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
Mateus Malaquias
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
Erisvaldo Junior
 
Backend para dispositivos moveis
Backend para dispositivos moveisBackend para dispositivos moveis
Backend para dispositivos moveis
Thales Lima
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Thyago Maia
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
Raniere de Lima
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojo
fabioginzel
 
Acessando banco de dados remoto com android
Acessando banco de dados remoto com android Acessando banco de dados remoto com android
Acessando banco de dados remoto com android
Leonardo Moreira Dos Santos
 
API com SpringBoot
API com SpringBootAPI com SpringBoot
API com SpringBoot
ceife
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
Vinícius de Paula
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
Reinaldo Junior
 
Phalcon FrameWork - Considerações Iniciais
Phalcon FrameWork - Considerações IniciaisPhalcon FrameWork - Considerações Iniciais
Phalcon FrameWork - Considerações Iniciais
PauloRobertoBolsanel
 
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftSemcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Juliana Chahoud
 

Semelhante a Conhecendo API do Facebook (20)

Desenvolvimento de Aplicativos para Facebook
Desenvolvimento de Aplicativos para FacebookDesenvolvimento de Aplicativos para Facebook
Desenvolvimento de Aplicativos para Facebook
 
Facebook Platform - Hack Thursday CW 40
Facebook Platform - Hack Thursday CW 40Facebook Platform - Hack Thursday CW 40
Facebook Platform - Hack Thursday CW 40
 
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPyDesenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
 
Desenvolvimento de Aplicações para o Facebook em ASP .NET
Desenvolvimento de Aplicações para o Facebook em ASP .NETDesenvolvimento de Aplicações para o Facebook em ASP .NET
Desenvolvimento de Aplicações para o Facebook em ASP .NET
 
Servidor de Aplicação Web: CherryPy - Python
Servidor de Aplicação  Web: CherryPy - PythonServidor de Aplicação  Web: CherryPy - Python
Servidor de Aplicação Web: CherryPy - Python
 
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1
 
PHP nas Mídias Sociais
PHP nas Mídias SociaisPHP nas Mídias Sociais
PHP nas Mídias Sociais
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
 
Backend para dispositivos moveis
Backend para dispositivos moveisBackend para dispositivos moveis
Backend para dispositivos moveis
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojo
 
Acessando banco de dados remoto com android
Acessando banco de dados remoto com android Acessando banco de dados remoto com android
Acessando banco de dados remoto com android
 
API com SpringBoot
API com SpringBootAPI com SpringBoot
API com SpringBoot
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Phalcon FrameWork - Considerações Iniciais
Phalcon FrameWork - Considerações IniciaisPhalcon FrameWork - Considerações Iniciais
Phalcon FrameWork - Considerações Iniciais
 
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com SwiftSemcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
Semcomp - USP São Carlos - Desenvolvendo um aplicativo iOS com Swift
 

Conhecendo API do Facebook

  • 1. Conhecendo a API do Facebook
  • 2. INTRODUÇÃO • O objetivo dessa apresentação é abordar as diversas opções disponíveis na API do facebook. • API rica e bastante consistente que permite interações com diversas plataformas e a criação de aplicativos diversos. • O Facebook disponibiliza o SDK em PHP, JS, IOS e Android.
  • 3. SDK PHP (utilizando a API do Facebook com PHP)
  • 4. O que é? • SDK php fornece ricas configurações e funcionalidades no server-side para acessar funcionalidades do Facebook através de chamadas da API. • Simplifica o processo de autenticação do usuário e o acesso do mesmo ao seu aplicativo. • O SDK do PHP pode trabalhar em conjunto com o SDK JavaScript para fornecer gerenciamento de sessão entre cliente e app.
  • 5. SDK PHP -> Instalando e Inicializando 1º Passo: • Necessário registrar a sua aplicação em https://developers.facebook.com/apps/ OBS: O registro da aplicação fornecerá um APP ID e uma APP SECRET necessárias para iniciar o SDK. 2º Passo: • Fazer o download do SDK PHP no endereço https://github.com/facebook/php-sdk
  • 6. SDK PHP -> Instalando e Inicializando 3º Passo: • Incluir o arquivo facebook.php na sua aplicação. 4º Passo: • Usar o SDK instanciando um novo objeto "new Facebook" com , no mínimo, a APP ID e APP SECRET.
  • 7. Implementando... require 'include/libs/facebook/src/facebook.php'; /*AppId e AppSecret*/ $appId = '299089040140399'; $appsecret = 'e42c3ee37ca90111904674d46a987e91'; /*Url do app no facebook */ $canvas_page = 'http://apps.facebook.com/estatisticas-virtual/'; /*Permissões separadas por virgula*/ $perms = “publish_stream,publish_actions, user_online_presence, user_photos, offline_access, read_friendlists, read_stream, manage_frien dlists,user_likes,friends_likes,user_videos”; OBS: Lista de permissões disponíveis em http://developers.facebook.com/docs/reference/api/permissions/ /*Cria uma instância com o AppId e AppSecret*/ $facebook = new Facebook(array( 'appId' => $appId, 'secret' => $appsecret, 'cookie' => true ));
  • 8. Implementando... /*Url de redirecionamento*/ /*Declaro as variáveis que serão utilizadas no processo de autenticação!A variável $auth_url será utilizada mais na frente*/ $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" . $appId . "&redirect_uri=" . urlencode($canvas_page) . "&scope=" . $perms; /* Recupera os dados passados pelo facebook*/ $signed_request = $_REQUEST["signed_request"]; /*Guarda alguns dados da variável anterior em outras variáveis*/ list($encoded_sig, $payload) = explode('.', $signed_request, 2); /* Decodifica o json com os dados do usuário*/ $dadosPermissao = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); /* Checo se o usuário deu permissão Se não , redireciona para a tela que pede as permissões Se sim, redireciona pra onde você quer/* if (empty($dadosPermissao["user_id"])) { echo("<script>top.location.href='" . $auth_url . "';</script>"); } else { ?> //entra html do app <?php } ?> OBS: Alguns conceitos serão explicados nos slides mais a frente.Utilize esse código para se basear e entender o processo.Avance e retorne para cá sempre que necessário!
  • 9. Facebook Object api Chamar um método API Gráfico, Consulta FQL, ou (obsoleto) API REST usando o SDK PHP. getAccessToken Obter o token de acesso atual que está sendo usado pelo SDK. getApiSecret Obter a AppSecret que está sendo usado pelo SDK. getAppId Obter o AppId que está sendo usando pelo SDK getLoginStatusUrl Returna um URL com base no status de login do usuário no facebook. getLoginUrl Obter uma URL que o usuário pode clicar para logar, autorizar o app e ser redirecionado de volta para o aplicativo. getLogoutUrl Este método retorna uma URL que, quando clicado pelo usuário, irá desconectá-lo da sua sessão do Facebook e, em seguida, redirecioná-lo de volta para sua aplicação. getSignedRequest Obter o pedido atual assinado que está sendo usado pelo SDK. getUser Esse método retorna o ID de usuário do Facebook do usuário atual, ou 0 se não há usuário logado. setAccessToken Defina o token de acesso atual que está sendo usado pelo SDK. setApiSecret Definir o segredo App que o SDK está usando atualmente. setAppId Defina o ID App que o SDK está usando atualmente. setFileUploadSupport Definir o suporte a arquivos de upload no SDK. useFileUploadSupport Obter se o apoio de upload de arquivo tenha sido habilitado no SDK.
  • 10. FacebookApiException getResult • Obter o objeto que é o resultado do erro ou exceção retornada pelo servidor. getType • Obter o tipo de erro ou exceção, por exemplo, OAuthException .
  • 11. Autenticação e Autorização • O SDK do PHP pode ser usado para dar suporte ao registro e login para o seu site usando a conta dos usuários do Facebook. • No lado do servidor, o SDK do PHP fornece métodos auxiliares para simplesmente fazer o login, solicitar permissões e logout. • Essa funcionalidade é fornecida pelo Facebook :: getUser () , Facebook :: getLoginUrl () e Facebook :: getLogoutUrl ()
  • 12. Signed_request • O parâmetro signed_request é utilizado para compartilhar informações entre o Facebook e o aplicativo em diferentes situações: • A signed_request é passado para Apps em Facebook.com quando eles são carregados no ambiente Facebook. • A signed_request é passada para qualquer aplicativo que tenha registrado uma chamada de retorno desautorizado na App Desenvolvedor sempre que um determinado usuário remove o aplicativo usando o Painel App. • A signed_request é passado para aplicativos que usam o Plugin de registro sempre que um usuário se registra com sucesso a sua app.
  • 13. Signed_request • O parâmetro signed_request é a concatenação de uma cadeia de assinatura HMAC SHA-256 , um ponto ( . ) e um base64url codificado objeto JSON. vlXgu64BQGFSQrY0ZcJBZASMvYvTHu9GQ0YM9rjPSso . eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsIjAiOiJwYXlsb2FkIn0 O JSON codificado contém os seguintes campos: user , algorithm , issued_at, user_id , oauth_token, expires , app_data , page , profile_id OBS:Mais informações em http://developers.facebook.com/docs/authentication/signed_request/
  • 14. Entendendo alguns conceitos... Canvas page: • Canvas é literalmente uma tela em branco dentro do Facebook onde o aplicativo é carregado. • Nesse espaço você carrega o seu aplicativo, que pode ser um código html, javascript, css, etc. • Quando um usuário solicita a página Canvas, a URL é carregada dentro de um iframe na página. Isso resulta em sua aplicação que está sendo exibido dentro do padrão Facebook. • Os arquivos da sua aplicação deverão estar hospedados em outro servidor.Ao registrar o aplicativo, a URL canvas deve ser o endereço de onde estão hospedados os seus arquivos. • O facebook irá fornecer um Canvas Page que é o endereço da sua aplicação no Facebook!
  • 15. O Facebook e suas conexões: Utilizando a GRAPH API • O Facebook vem trocando sua antiga API, chamada REST, baseada em requisições HTTP com resposta em XML, pela Graph API, onde todos os elementos básicos da rede social são representados em páginas diferentes e cada elemento possui sub- elementos criando grafos, que deram origem ao nome da API. • https://graph.facebook.com/me: Retorna os dados do usuário atual • https://graph.facebook.com/me/picture: Retorna a imagem de exibição do usuário atual • https://graph.facebook.com/me/friends: Retorna todos os amigos do usuário atual • Todas as requisições feitas retornam um objeto em formato JSON!
  • 16. $facebook->api(); • O SDK php disponibiliza o método Api para acesso ao banco de dados do facebook!Esse método chama a Graph Api do facebook, uma FQL ou a REST API (deprecated) . • Para chamar a Graph Api, o primeiro parâmetro a ser passado é o caminho.Para fazer um consulta FQL ou a REST API, o parâmetro passado deve ser um array. $facebook->api($path, $method, $params); $path = O caminho para o pedido.Para acessar as informações do usuário logado, por exemplo, usa-se "/me" $method (opcional)= Método HTTP requisitado.Pode ser GET, POST ou DELETE. $params = Parâmetros específicos para o método que se está chamando.Passado no formato de um array associativo. $user_profile = $facebook->api('/me','GET'); echo "Name: " . $user_profile['name'];
  • 17. FQL QUERIES • O objeto FQL permite a execução de consultas FQL usando a GRAPH API.O Facebook Query Language, ou FQL, permite que você use uma interface SQL para consultar os dados expostos pelo Graph API . Ele fornece algumas funcionalidades avançadas não disponíveis na GRAPH API, incluindo consultas em lotes em uma única chamada. • A documentação de todas as tabelas do facebook estão no endereço http://developers.facebook.com/docs/reference/fql/ • Ao contrário da SQL, o FQL disponibiliza as funções now () , strlen () , substr () e strpos () .
  • 18. FQL - Multi Consultas • "query1":"SELECT uid, rsvp_status FROM event_member WHERE eid=12345678“ • "query2":"SELECT name, url, pic FROM profile WHERE id IN (SELECT uid FROM #query1)"
  • 19. GRAPH API com PHP SDK • Existem alguns parâmetros disponíveis para filtrar as consultas: limit, offset - https://graph.facebook.com/me/likes?limit=3 until, since - https://graph.facebook.com/search?until=yesterday&q=orange
  • 20. Datas • Os campos de datas são retornados no formato ISO- 8601.É possível modificar o formato passando o date_format como parâmetro.As opções disponíveis são iguais à função date() do php.
  • 21. Graph Api - Introspecção • A Graph API suporta introspecção de objetos, permitindo que todas as conexões do objeto sejam acessadas. • O recurso a introspecção é uma forma útil e extensível para encontrar todas as coisas que os usuários estão conectados. • O Parâmetro a ser passado é o metadata = 1
  • 22. GRAPH API - Busca • É possível acessar todos os objetos da GRAPH API. • O formato é: https://graph.facebook.com/search?q=QUERY&type=OBJ ECT_TYPE
  • 23. Graph Api Explorer • O facebook disponibiliza o aplicativo GRAPH API FACEBOOK. • Ele permite que consultas sejam realizadas, retornando o JSON respectivo.