Introdução

Perguntava-me recentemente se haveria a possibilidade de efetuar busca de dados existentes no Facebook no intuito de efetuar análises de tendências variadas a partir das informações geradas. Surpreendentemente, descobri que o próprio Facebook oferece API (Application Programming Interface) para efetuar tal integração. Através desta API, é possível desenvolver softwares que interajam diretamente com a rede social. Para tanto, a extração de tais dados será efetuada através da suíte Pentaho.

Pentaho é uma plataforma Open Source para criação de soluções de Inteligência de Negócios (Business Intelligence-BI). Ela possui uma suíte completa de BI, apresentando grande flexibilidade e independência entre diversas plataformas além de alta confiabilidade e segurança. Este software tem por propósitos básicos os seguintes itens:

  • Geração de relatórios empresariais;
  • Processos de ETL (Extração, Transformação e Carga);
  • Análise de informações (OLAP);
  • Painéis (dashboards) para controle gerencial;
  • Mineração de dados (Data Mining);
  • Workflow;

Informações complementares e detalhadas sobre esta suíte podem ser encontradas nos seguintes endereços:

Nesse primeiro momento farei breve abordagem sobre o PDI(Pentaho Data Integration).

Você pode fazer o download da suíte completa no Sourceforge.org, ou baixar apenas a ferramenta Pentaho Data Integration, a qual nos interessa neste momento. O endereço para download é: http://sourceforge.net/projects/pentaho/files/.

É importante ressaltar que, feito o download, as ferramentas da suíte Pentaho não são instaláveis (via MSI, EXE, etc.), será necessário apenas extrair o arquivo compactado em um diretório qualquer e, seguidamente, executar o arquivo SPOON.BAT (para Windows).

Figura 1: Interface do Pentaho

Outras explicações sobre o PDI serão dadas mais adiante.

O Facebook Graph API 

Em síntese, a API gráfica do Facebook é um serviço do tipo RESTful que retorna arquivos do tipo JSON. O processo é feito através do envio de uma solicitação HTTP para iniciar conexão com o Facebook; isto permite executar métodos GET para retornar dados a serem analisados via linguagem de programação (Java, Python, PHP, etc.), ou sem programação, usando PDI.

Para a extração dos dados desejados, é necessário criar um aplicativo dentro do Facebook. Isto permite que obtenhamos um número ID e uma chave secreta para autorização da rede social.

Este artigo não se propõe a ensinar como criar aplicativos dentro do Facebook, contudo, segue um tutorial bastante compacto.

Criação de Aplicativos no Facebook

1 – A criação requer o uso de uma conta na rede social. No caso de você não possuir uma, será preciso criá-la.

2 – Considerando que você já possui conta na rede social, será necessário instalar o aplicativo Developer, visitando http://www.facebook.com/developers e selecionando as opções da solicitação para instalar a aplicação. Feito isto, surgirá tela requerendo autorização para acesso às informações básicas de seu perfil.

Registro para desenvolvedores

Figura 2: Registro para desenvolvedores

3 – Assim que a aplicação Developer tiver sido instalada e a autorização concedida, você poderá clicar no botão “Criar Novo Aplicativo” para criar sua aplicação.

Criar novo aplicativo

Figura 3: Criar novo aplicativo

Informações para criação do aplicativo

Figura 4: Informações para criação do aplicativo

Verificação de segurança

Figura 5: Verificação de segurança

É importante esclarecer nesse ponto que a API do Facebook exige, por questão de segurança, que seu aplicativo seja redirecionado para um servidor que utilize o protocolo HTTPS. Nas opções Canvas URL e Secure Canvas URL é necessário informar uma página HTTPS para que você possa utilizar os dados da rede social que necessitem de autorização de usuários. Observe na figura abaixo que o Facebook gerou um App ID e App Secret. Guarde esses números, utilizaremos ele no PDI.

Informações detalhadas do aplicativo

Figura 6: Informações detalhadas do aplicativo

OBS: Clique em Use Graph API Explorer, você será redirecionado para uma página contendo seu token. Guarde-o para que possamos utilizamos mais adiante no PDI.

Nota: Volto a dizer que a intenção não é explicar detalhadamente sobre a criação de um aplicativo dentro do Facebook. Existem diversos sites e vídeos no YouTube mostrando como fazer. Seja investigativo e estude a documentação sobre a API do Facebook através do endereço: https://developers.facebook.com/docs/

Após criação do aplicativo acesse-o através do navegador: https://apps.facebook.com/ nome_do_seu_aplicativo/

Você receberá a seguinte tela – a sua pode ser diferente dependendo das permissões que você solicitou.

Clique em Permitir.

Requisição de permssão

Figura 7: Requisição de permssão

Agora observe a URL que foi criada na barra de endereços do navegador e que você foi redirecionado para sua página a qual você colocou na redirect_url.

Página de redirecionamento do aplicativo

Figura 8: Página de redirecionamento do aplicativo

Uma vez que se tem criado nosso aplicativo de teste, somos capazes de usar o PDI e o método HTTP GET para buscar dados de nossos amigos no Facebook. Tais como: news feed, Sexo, Idade, etc..

Criando uma transformação PDI para buscar informações de usuários do Facebook

1. Acessar o software PDI e Criar uma nova transformação através dos seguintes menus (File/New/Transformation)

2. Insira na área de trabalho os componentes abaixo ( eles encontram-se em Input):

Ligação entre os componentes

Figura 9: Ligação entre os componentes

4. Para fazer essa ligação nos componentes, passe o mouse sobre o componente até que apareçam algumas opções. Em seguida, deve-se selecionar a seta na cor verde e arrastá-la ate o próximo componente.

Opções do componente Generate Rows

Figura 10: Opções do componente Generate Rows

Faça a ligação dos três componentes.

Em seguida, iremos configurar os componentes de acordo com o aplicativo criado no Facebook e colocar as informações que queremos obter de algum usuário ou grupo de usuários.

1. Clique duas vezes para abrir o componente Generate Rows. Feito isto, insira o token(App Secret) de acesso configurado no aplicativo do Facebook no campo “Valor”. Para visualizar de uma maneira rápida o token, volte às configurações de seu aplicativo e clique em: Graph API Explorer.

Detalhes do componente Generate Rows

Figura 11: Detalhes do componente Generate Rows

Perceba que, na imagem, já defini alguns campos com os quais quero trazer informações. Não é obrigatório neste momento colocar esses campos, o que é importante, e necessário, para a extração funcionar é colocar o token de acesso ao aplicativo do FB.

Você pode estar perguntando-se onde encontrei essa lista de campos. Ela encontra-se disponível em: https://developers.facebook.com/docs/guides/canvas/. Lembre-se do que citei há alguns parágrafos atrás sobre o quão importante é a leitura da documentação da API do Facebook. Nela você irá encontrar todos os campos e parâmetros de busca a dados.

Uma maneira mais rápida para encontrar os campos, formatos, tipo de conexões e o Token pode ser feita acessando-se a Graph API Explorer após a criação do aplicativo. Ver figura abaixo.

Graph API Explorer

Figura 12: Graph API Explorer

2. O próximo passo é configurar o componente HTTP client

Abra o componente na aba General insira em URL o caminho da busca.

Explicação:

Caminho padrão: HTTPS://graph.facebook.com/

100001219740639: meu ID no Facebook, ao invés de passar o seu ID, você pode passar o ID de um usuário especifico.

Feed: este é o campo no qual eu quero buscar informações, ou seja, o retorno será composto pelas informações de usuários que publicam em minha linha do tempo.

Detalhes do componente HTTP web service

Figura 13: Detalhes do componente HTTP web service

OBS importante: A forma de proteção aos dados que a plataforma do Facebook utiliza hoje para os usuários é em forma de solicitação, ou seja, para que você tenha acesso livre aos dados que o usuário não deixou como padrão “público”você terá que enviar esse aplicativo aos usuários para que eles lhe deem permissões. Com certeza essa não é uma tarefa muito difícil, visto que recebemos aplicativos de jogos diariamente no Facebook, e, para você jogar, eles lhe pedem algumas permissões. Alguns usuários, sem perceber, acabam liberando praticamente todas suas informações e dados para os fabricantes desses aplicativos.

Na aba Fields clique em Get Fields. O componente buscará os dados do componente antecessor.

Definição dos campos recuperados

Figura 14: Definição dos campos recuperados

3. O último passo é configurar o componente de saída. Na figura abaixo a configuração do componente Excel Output, o qual gera uma saída no formato de arquivo do Excel.

Na aba Fileinsira o caminho onde você deseja salvar o arquivo e na aba Fields faça o mesmo procedimento do componente anterior clicando em Get Fields.

Configurando exportação para Excel

Figura 15: Configurando exportação para Excel

A próxima figura é somente para exemplificar que se pode gerar saídas em vários formatos. Dentre eles: JSON, TXT, ARFF , o qual gera um arquivo para Weka Data Mining.

Vários componentes de exportação possíveis

Figura 16: Vários componentes de exportação possíveis

Agora que configuramos todos os componentes necessários para a extração de dados.

Clique no botão para executar a transformação.

Executar transformação

Figura 17: Executar transformação

Se tudo estiver configurado corretamente, será gerado um arquivo no formato do Excel semelhante a este:

Arquivo do Excel gerado

Figura 18: Arquivo do Excel gerado

Se você tiver configurado a saída para o formato TXT. Deverá aparecer algo semelhante a isso:

Exportação para arquivo TXT

Figura 19: Exportação para arquivo TXT

Apesar de parecer confuso o retorno da informação, para aqueles que trabalham com arquivos JSON, não haverá dificuldades de leitura.

Tendo os dados em mãos, você poderá trata-los da maneira que lhe convier, podendo ser, através de linguagens de programação, ou até mesmo com o PDI. Com ele você poderá gravar esses dados diretamente em banco de dados orientados a documentos. Você poderá trabalhar com os conceitos de Big Data com Casandra, Hadhoop, MapReduce e o melhor - sem escrever uma linha de código.

Vê-se aí a gama de possibilidades que possuímos ao ter esses dados de usuários armazenados em bancos de dados.

Não entrarei em detalhes mais profundos, por exemplo, “Escalabilidade” visto que a plataforma Facebook não armazena esses dados em uma base de dados, ela apenas os armazena em memória por um curto período de tempo. Com isso você precisará pensar em questões do tipo: A coleta de dados que proponho fazer, deverá ser feita ‘de quanto em quanto tempo’?, O que devo fazer se meu processo de coleta falhar?

Comentários Finais

Você pode literalmente fazer praticamente tudo que puder imaginar no Facebook, e as vastas quantidades de dados que ele expõe por meio de suas poderosas APIs fornecem enormes oportunidades para criação de aplicações orientadas por dados inteligentes e incríveis. O tratamento superficial que dei nesse artigo sobre a plataforma Facebook não chega sequer a arranhar a superfície de tudo que é possível, ,porém, espero que este artigo tenha lhe fornecido um caminho para que você utilize e aprofunde-se ainda mais nessa nova fase de análises de dados.