Pplware

Programação WEB é à Quinta-feira!

Por Pedro Peixoto para o PPLWARE Trabalhar com APIs do Facebook usando o PHP

Esta semana, enquanto projectava um novo site para um festival musical, achei que seria interessante ligar a página ao facebook do evento de modo a interagir em tempo real criando uma página mais dinâmica. Depois de desenvolver a funcionalidade pretendida, e verificando que o código era bastante simples, achei que seria algo interessante para falar esta semana. Fazemos por isso uma pausa no jQuery e vamos exemplificar em PHP como trabalhar com as APIs do facebook.

A ideia era simples, importar as imagens de todos os utilizadores que iriam participar no evento e apresenta-las como fundo da página. A maneira mais simples de interagir com o facebook é através da Graph API. Esta API permite-nos aceder a objectos do facebook (pessoas, páginas, eventos, …) de forma rápida e simples através de um pedido http à página https://graph.facebook.com/ID, sendo que o ID é um identificador único para páginas, utilizadores e eventos. Como resposta, são devolvido em JSON (ver artigo anterior) os dados referentes ao objecto pedido.

“All objects in Facebook can be accessed in the same way:

Para fazer o primeiro teste vamos abrir directamente no browser o pedido para os nossos dados pessoais. Como podemos verificar na imagem de baixo os campos públicos do meu perfil são devolvidos sem ser necessária qualquer autenticação.

De seguida vamos fazer este pedido em PHP de forma a poder-mos fazer um script dinâmico. A maneira mais simples é usar o file_get_contents() que devolve o conteúdo de um ficheiro dado por parâmetro, neste caso passamos o endereço do pedido e guardamos numa variável a resposta JSON.


A resposta é semelhante:

Vamos agora fazer o mesmo para o evento:


Recebemos os dados referentes ao evento:

De facto a Graph API é muito simples de usar e permite-nos obter os dados gerais de todos os objectos. No entanto, no nosso caso queremos ir mais longe e obter os participantes do evento. Vamos por isso recorrer à API do facebook, usando o objecto “events” e a sua função “getMembers”. No entanto para aceder a um nível mais profundo necessitamos de um access token, isto é uma chave que garante temporariamente a conexão autenticada ao facebook.

Para obtermos esta chave necessitamos de autenticar o utilizador ou a aplicação, uma vez que pretendemos que tudo seja feito silenciosamente sem pedir qualquer password ao utilizador, vamos optar por autenticar a aplicação. Para tal necessitamos de criar uma nova aplicação no facebook e usar as chaves que nos são fornecidas.

Vamos definir no código estas constantes, e de seguida efectuamos o pedido de autenticação:


Na resposta recebemos o nosso access_token:

Agora que já temos uma chave de autenticação já podemos usar a função events.getMembers da API do facebook. Tudo é feito da mesma forma mas adicionando à url do pedido o access_token que nos foi devolvido anteriormente.

Aqui fica o código completo:


E o resultado, que basicamente é um array que nos devolve os ids dos utilizadores separados por aqueles que vão participar, talvez vão, não vão, e não responderam.

De seguida basta fazer a interpretação do JSON como já aprendemos (ver artigo anterior) e colocar as fotografias.

Relembrar que para aceder a uma fotografia do utilizador através do seu id usamos o seguinte endereço:

https://graph.facebook.com/<iduser>/picture

Teremos então de acrescentar as seguintes linhas de forma a apresentar a foto de todos os que vão participar:

$dados=json_decode($httprequest,true);    
 foreach($dados['attending'] as $dado)    	
	echo '';

E pronto, está explicado o básico do uso das APIS do facebook. Podem ver o resultado final do site em www.avilaemfesta.com. Agora é dar asas à imaginação e ler, aprender e programar.

Exit mobile version