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.
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.