Facebook - Faculdades Integradas do Vale do Ivaí

Propaganda
_capa
Integrando
Aplicações
Java com o
Facebook
Descubra como é fácil criar
uma aplicação para rodar no Facebook
Desde o lançamento oficial do Facebook, em 2004, o número de usuários vem aumentando a cada dia. Atualmente estima-se que existam cerca de 900 milhões de usuários ativos na rede social. Esse sucesso do Facebook se deve à grande quantidade de funcionalidades,
aplicativos e extensões disponíveis para seus usuários. A estratégia
utilizada para conseguir disponibilizar novos aplicativos dentro da
rede social sem muito esforço interno é baseada em prover maneiras
para que outros desenvolvedores construam seus aplicativos integrados à plataforma do Facebook. Do ponto de vista do desenvolvedor, é muito interessante criar aplicativos para o Facebook devido
à grande quantidade de usuários ativos que existem na plataforma.
Este artigo mostra como criar um aplicativo integrado ao Facebook
de maneira simples.
5\
João Paulo Gomes dos Santos | [email protected]
Formado em Engenharia da Computação na ETEP Faculdades. Atua como desenvolvedor Java na VPSA. Possui as certificações
SCJP, SCWCD, SCBCD e SCEA.
Aplicativos dentro do Facebook
A
tualmente o Facebook é a rede social que possui mais usuários ativos, cerca de 900 milhões
espalhados por todo o mundo. Dentro do Facebook
é possível entrar em contato com os amigos, conversar, compartilhar fotos, organizar eventos, entre outras atividades. Além dessas funcionalidades disponibilizadas na rede social ainda existem milhares de
outras funcionalidades provenientes de aplicativos
criados por terceiros.
Pode-se dizer que os aplicativos disponibilizados no Facebook contribuem significativamente
para o aumento do número de usuários ativos na
rede social. Estes aplicativos fazem com que os usuários fiquem mais tempo navegando na rede social
e, de forma indireta, contribuem para o aumento do
número de usuários ativos.
Para o Facebook os aplicativos são ótimos para
manter os usuários sempre conectados na rede social e assim garantir a receita da empresa, que na
maior parte vem de propagandas. Do ponto de vista
do desenvolvedor, criar aplicativos para o Facebook
é interessante, pois o Facebook centraliza muitos
usuários e seus relacionamentos de amizades consequentemente. A disseminação de aplicativos no Facebook é quase viral, em pouco tempo uma aplicação
pode se espalhar por todo o mundo, sendo divulgada
por toda a rede de relacionamentos.
Empresas de diversos segmentos investem para
conseguir espaço na rede social e, como resultado
deste investimento, esperam conseguir maior aceitação pelo seu público-alvo. Pode-se citar como
exemplo a rede Walmart, que divulga suas promoções em sua página do Facebook e dá descontos baseados na quantidade de visitas ou Likes que recebe.
Com toda estrutura disponível no Facebook, surgiu
uma nova maneira de interação entre as empresas
e seus clientes, baseada em divulgação de conteúdo
pela Internet.
Outros motivos para a criação de aplicações para
o Facebook são:
» Trazer aplicações existentes para dentro do
Facebook.
» Promover uma marca no Facebook.
O objetivo deste artigo é mostrar como criar
aplicativos dentro do Facebook e fazer uso das APIs
/6
disponibilizadas.
Integrando sua aplicação com o
Facebook
Existem três maneiras para integrar sua aplicação com o Facebook, dentre elas estão:
» Plug-ins sociais, como, por exemplo, o plug-in que adiciona botão para curtir o site, outro
plug-in interessante é o que mostra recomendações baseadas em seus interesses e de seus
amigos, como mostra a figura 1.
» SDKs para desenvolvimento mobile facilitam
a integração de aplicativos mobile com o Facebook.
» Aplicações que são executadas dentro do Facebook, mais conhecidas como Canvas App, este
tipo de integração é muito usado por jogos e
será usado na aplicação de exemplo deste artigo.
Figura 1. Plug-in social de recomendações.
Graph API
O Facebook conta com uma API conhecida como
Graph API. Esta API provê uma maneira simples para
representar objetos da rede social (pessoas, fotos,
eventos, páginas) e as respectivas conexões existentes entre eles (relacionamentos de amizades, compartilhamento de conteúdo e identificação de pessoas em fotos).
Todo objeto dentro do grafo social do Facebook
é representado por um identificador único. Informações sobre um objeto podem ser obtidas através do
seguinte endereço https://graph.facebook.com/ID,
onde ID é o identificador do objeto a ser recuperado.
Como exemplo pode-se usar a seguinte URL https://
graph.facebook.com/19292868552 que representa a
página oficial para a plataforma Facebook, que possui
o ID 19292868552.
Além de disponibilizar o acesso usando o ID do
objeto, também é possível acessar informações de
usuários através de seus nomes de usuário, como, por
exemplo, https://graph.facebook.com/btaylor. Existe
um ID especial chamado me que representa o usuário
atual.
Todos os objetos do grafo social e seus relacionamentos podem ser acessados seguindo a seguinte
estrutura https://graph.facebook.com/ID/CONNECTION_TYPE, alguns exemplos são:
» Página da coca-cola: https://graph.facebook.
com/cocacola
» Grupo de desenvolvedores do Facebook: https://graph.facebook.com/195466193802264
» Amigos:
https://graph.facebook.com/me/
friends?access_token=AAAAA
» Mural:
https://graph.facebook.com/me/
feed?access_token=AAAAA
» Álbum de fotos: https://graph.facebook.com/
me/albums?access_token=AAAAA
» Eventos:
https://graph.facebook.com/me/
events?access_token=AAAAA
» Músicas:
https://graph.facebook.com/me/
music?access_token=AAAAA
» Filmes:
https://graph.facebook.com/me/
movies?access_token=AAAAA
Note que algumas requisições possuem um pa-
râmetro chamado access_token que representa uma
permissão para acessar recursos que necessitam de
autorização. O processo de autorização será discutido a seguir.
Autorização
O grafo social do Facebook possibilita o acesso
rápido a informações públicas de um usuário (primeiro e último nome do usuário e foto) sem a necessidade de autorização, como no exemplo https://graph.
facebook.com/btaylor, caso exista a necessidade de
acessar informações adicionais do usuário existe a
possibilidade de fazer uma requisição passando o access_token como parâmetro.
A Graph API utiliza o protocolo OAuth 2.0 para
controlar o acesso aos recursos disponibilizados pelas APIs da plataforma, deve-se, previamente, obter
uma autorização para acesso ao recurso desejado.
Quando o usuário acessa o aplicativo através do
Facebook, uma requisição é disparada para a URL raiz
da aplicação, essa requisição vem com um parâmetro
chamado signed_request. Através do conteúdo do parâmetro signed_request pode-se descobrir se o usuário autorizou ou não o acesso aos seus dados. Nos
casos em que o usuário autoriza o acesso é possível
obter o access_token neste momento. Caso o acesso
aos dados do usuário não tenha sido liberado ainda,
deve-se redirecionar o usuário para a tela de solicitação de autorização para acesso aos dados do usuário,
como é mostrado na figura 2.
Mais informações sobre o fluxo autenticação com
OAuth podem ser obtidas através do artigo Integrando suas aplicações Android com o Twitter e Facebook
desta edição da revista MundoJ.
Figura 2. Tela de solicitação de autorização do aplicativo.
7\
Figura 3. Tela inicial da aplicação Quiz MundoJ.
Aplicação de exemplo
Para demonstrar a integração de uma aplicação
Java com as APIs do Facebook será desenvolvida uma
aplicação de exemplo, que será executada dentro do
Facebook.
A aplicação de exemplo se chama Quiz MundoJ e
consiste em um jogo de perguntas e respostas sobre
Java. A tela inicial da aplicação está representada na
figura 3.
Na tela inicial da aplicação existe um botão para
iniciar o quiz. A tela com as perguntas do quiz será
exibida logo após o acionamento do botão Iniciar
Quiz MundoJ. A tela com as perguntas está representada na figura 4.
Figura 5. Publicação feita no mural do usuário após o envio das
Após o preenchimento das respostas o usuário respostas.
deve enviar as respostas usando o botão Enviar Respostas, depois disso o resultado obtido no quiz será
publicado no mural do Facebook do usuário, como
Controller, com um método mapeado para atender as
mostra a figura 5.
requisições para a raiz da aplicação, como mostra a
Listagem 1. Esse método é responsável por receber e
O funcionamento da aplicação é bem simples. O
armazenar o parâmetro signed_request para uso pospróximo passo deste artigo é mostrar alguns detalhes
terior.
da implementação. O código da aplicação será disponibilizado na seção de downloads desta edição.
Listagem 1. Método que atende requisições da raiz
A aplicação foi desenvolvida utilizando Maven e da aplicação.
Spring MVC. Ela possui uma classe chamada Home@RequestMapping(“/”)
public String index(Map<String, Object> map,
HttpServletRequest request) {
// Recupera o parâmetro signed_request
String signedRequest =
request.getParameter(“signed_request”);
if(signedRequest != null) {
// Extrai o accessToken do signedRequest, caso
// ele exista
String accessToken =
getAccessToken(signedRequest);
// Se o accessToken for inválido
if(isAccessTokenInvalido(accessToken)) {
// O accessToken será solicitado novamente
requisitarAccessToken(map);
} else {
Figura 4. Tela que exibe as perguntas do Quis.
/8
}
}
}
// Publica a porcentagem de acertos do usuário
// em seu mural
facebookPublisher.publicarMensagemNoMural(
porcentagemDeAcertos, accessToken);
// Se o accessToken for válido, ele será
// armazenado
armazenarAccessToken(request, accessToken);
return “index”;
}
return “redirect:/?message=Respostas Enviadas
com sucesso!”;
Além do HomeController a aplicação possui a
A classe FacebookPublisher possui um método
classe PerguntaController, a qual é responsável por
responsável
por fazer a comunicação com a Graph
exibir a lista de perguntas para o usuário, como podeAPI
do
Facebook
para publicar o resultado do quiz no
-se ver na Listagem 2.
mural do usuário. O método publicarMensagemNoListagem 2. Método responsável por exibir a lista de Mural é mostrado na Listagem 4.
perguntas.
Listagem 4. Método que publica mensagem no
mural.
@RequestMapping(“/”)
public String listarPerguntas(Map<String, Object> map,
HttpServletRequest request) {
map.put(“perguntas”,
perguntaService.listarPerguntas());
return “perguntas”;
}
public void publicarMensagemNoMural(double pontuacao,
String accessToken) {
PostMethod postMethod = new
PostMethod(“https://graph.facebook.com/me/feed”);
postMethod.addParameter(“access_token”,
accessToken);
postMethod.addParameter(“message”, “Acertei “ +
pontuacao + “% do Quiz MundoJ”);
postMethod.addParameter(“link”,
“https://apps.facebook.com/quizmundoj/”);
postMethod.addParameter(“name”, “Resultado Quiz
MundoJ”);
postMethod.addParameter(“type”, “link”);
postMethod.addParameter(“caption”,
“Quiz MundoJ - Perguntas e respostas sobre Java”);
Além de listar as perguntas, a classe PerguntaController possui um método responsável por receber
as respostas do usuário, delegar o cálculo da porcentagem de acertos para a classe ContadorDeAcertos,
recuperar o accessToken e delegar a publicação do
resultado do quiz para a classe FacebookPublisher,
como mostra a Listagem 3.
Listagem 3. Método que recebe respostas.
@RequestMapping(value = “/responder”, method =
RequestMethod.POST)
public String postarResposta(HttpServletRequest
request) {
// Recupera a lista de perguntas
Pergunta[] perguntas = perguntaService.
listarPerguntas();
// Recupera as respostas enviadas pelo usuário
String[] respostas = getRespostas(
request, perguntas.length);
// Calcula a porcentagem de acertos do usuário
double porcentagemDeAcertos = contadorDeAcertos.
calcularPorcentagemDeAcertos(perguntas,
respostas);
// Recupera o accessToken
String accessToken =
recuperarAccessToken(request);
HttpClient httpClient = new HttpClient();
}
try {
httpClient.executeMethod(postMethod);
} catch (Exception e) {
e.printStackTrace();
}
Este método faz uma requisição HTTP POST para
a API do Facebook usando o endereço https://graph.
facebook.com/me/feed, passando os seguintes parâmetros:
» access_token: token de acesso válido para que a
requisição seja autorizada;
» message: mensagem a ser publicada no mural
do usuário;
» link: link para ser colocado na mensagem publicada no mural do usuário;
» type: tipo da informação a ser publicada, pode
9\
Figura 6. Página de desenvolvedores do Facebook.
Figura 7. Tela para criação de novo aplicativo.
»
»
ser link, photo ou vídeo, neste caso é link;
name: nome do link que será publicado;
caption: detalhes sobre o link que será publicado.
Registrando o aplicativo no Facebook
Depois de finalizar o desenvolvimento do aplicativo deve-se registrá-lo no Facebook. Para isso
deve-se acessar a página de desenvolvedores do Facebook: https://developers.facebook.com/. A página
dos desenvolvedores está representada na figura 6.
Para registrar um aplicativo deve-se navegar até
a página de aplicativos através do link Aplicativos no
canto superior direito da página e em seguida clicar
no botão Criar Novo Aplicativo também situado no
canto superior direito da página. A tela para criação
de um novo aplicativo será exibida, como é mostrado
na figura 7.
Após a criação do novo aplicativo você será encaminhado para a página de configuração do seu aplicativo, assim como é mostrado na figura 8.
/para saber mais
> Para saber mais sobre OAuth , leia o artigo Integrando
suas aplicações Android com o Twitter e Facebook desta
edição da revista MundoJ.
> Para saber mais sobre o Heroku recomenda-se que o
leitor acesso a sua página: http://java.heroku.com/
App ID que identifica a aplicação e o App Secret que é
usado para garantir a integridade dos resultados obtidos através da API do Facebook. Nesta mesma página de configuração deve-se selecionar um dos modos
de integração com o Facebook que estão disponíveis,
para este artigo, deve-se selecionar a opção App on
Facebook e preencher os endereços da aplicação nos
campos Canvas URL e Secure Canvas URL, como é
mostrado na figura 8. A aplicação Quiz MundoJ está
hospedada em um serviço que oferece suporte ao
deploy de aplicações Java chamado Heroku (http://
www.heroku.com/). Por isso o endereço configurado
para o campo Canvas URL é http://quizmundoj.heNa tela de configuração do aplicativo pode-se rokuapp.com/.
A aplicação de exemplo deste artigo é bem simobservar algumas informações importantes como o
/ 10
/referências
Figura 8. Tela de configuração do aplicativo.
ples, mas serve como guia para integração de uma
aplicação Java com o Facebook.
Considerações finais
Este artigo mostra como é simples e fácil desenvolver e integrar aplicações Java com o Facebook.
Com as informações deste artigo o leitor pode ter
uma boa noção do processo de desenvolvimento e integração com o Facebook.
Este artigo mostrou apenas uma pequena porção
das possibilidades de integração disponíveis. Recomendo aos leitores que explorem a Graph API para
conhecerem as possibilidades de integração de aplicações Java com o Facebook.
> https://developers.facebook.com/docs/appsonfacebook/
tutorial/
> https://developers.facebook.com/docs/guides/canvas/
> https://developers.facebook.com/docs/samples/canvas/
> https://developers.facebook.com/docs/reference/api/
> https://developers.facebook.com/docs/authentication/
> https://developers.facebook.com/docs/authentication/
canvas/
> https://developers.facebook.com/docs/authentication/
signed_request/
> http://java.heroku.com/
11 \
Download