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.

Conhecendo API do Facebook

  • 1.
    Conhecendo a APIdo Facebook
  • 2.
    INTRODUÇÃO • O objetivodessa 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 aAPI 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 eAppSecret*/ $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*/ /*Declaroas 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 ummé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 oobjeto 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âmetrosigned_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... Canvaspage: • 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 esuas 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 - MultiConsultas • "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 comPHP 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 camposde 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.