Facebook sdk, Trabalhando com Facebook Query Language (FQL)

Posted on julho 27, 2013. Filed under: Facebook, PHP | Tags:, , |

Introdução

O Facebook, através do FQL, permite consultar dados no Graph API usando um estilo próximo ao conhecido SQL. Neste artigo vamos aprender como executar, elaborar e testar consultas na plataforma do Facebook (FQL) através do SDK para PHP ou Javascript.

Vamos citar alguns exemplos bem interessantes de FQL além de como usar a ferramenta de apoio para desenvolvedores chamada Graph API Explorer disponibilizado pelo facebook para elaborar e testar consultas FQL

  1. Executando FQL através do SDK para PHP e Javascript
  2. Neste tópico vamos aprender como executar uma FQL tanto através do SDK para PHP como pelo SDK para Javascript. Como apoio, vamos usar a seguinte consulta FQL:

    SELECT friend_count FROM user WHERE uid = me()
    (Simplesmente consulta a quantidade de amigos que o usuário do facebook possui)

    Executando através de PHP:

    Exemplo de como executar FQL através do SDK para PHP:

    $result = $facebook->api(array(
    		"method" => "fql.query",
    		"query"  => "SELECT friend_count FROM user WHERE uid = me()",
    ));
    
    if($result) {
    	echo "Quantidade de amigos: {$result[0]['friend_count']}";
    }
    

    Exemplo em PHP, completo funcional:

    Exemplo completo e funcional:
    (Basta apenas parametrizar o appId e secret)

    <?php
    // incluir a lib fo facebook
    require 'facebook-php-sdk-master/src/facebook.php';
    
    // Cria a instancia da aplicacao, informando o appid e o secret
    $facebook = new Facebook(array(
      'appId'  => '',
      'secret' => '',
    ));
    
    // obtem o id do usuario
    $user = $facebook->getUser();
    
    if ($user) { // usuario logado
            try {
    	
            	// Obtem dados do usuario logado
    	        $user_profile = $facebook->api('/me');
    
    			$result = $facebook->api(array(
    				"method" => "fql.query",
    				"query"  => "SELECT friend_count FROM user WHERE uid = me()",
    			));
    	
    			if($result) {
    				echo "Quantidade de amigos: {$result[0]['friend_count']}";
    			}
    
            } catch (FacebookApiException $e) {
                    var_dump($e);
                    $user = null;
            }
    } else {
            // usuario nao logado, solicitar autenticacao
            $loginUrl = $facebook->getLoginUrl();
    		header("Location: $loginUrl");
    }
    

    Executando através de Javascript:

    Exemplo de como executar FQL através do SDK para Javascript:

    FB.api({
        method: 'fql.query',
        query:  'SELECT friend_count FROM user WHERE uid = me()'
    }, function(resp) {
        if (resp.length) {
    		alert(resp[0].friend_count);
        }
    });
    

    Exemplo em Javascript, completo funcional:

    Exemplo completo e funcional:
    (Basta apenas parametrizar o appId)

    <!doctype html>
    <html lang="pt-BR">
    <head>
    	<meta charset="utf-8">
    	<title>Teste App Facebook</title>
    
    	<script src="//connect.facebook.net/pt_BR/all.js"></script>
    	<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    
    <script>
    FB.init({
          appId : '',
          status: true, cookie: false, xfbml: false
    });
    
    
    var FBCountFriends = function() {
    	FB.api({
            	method: 'fql.query',
                   	query:  'SELECT friend_count FROM user WHERE uid = me()'
            }, function(resp) {
            	if (resp.length) {
    				alert(resp[0].friend_count);
                } 
            });
    }
    
    // onload
    jQuery(document).ready(function() {
    
    	FB.getLoginStatus(function(response) {
            	if (response.status === 'connected') {
    				FBCountFriends();
    	        } else {
    				FB.login(function(response) {
    			        	if (response.authResponse) {
    							FBCountFriends();
    				        }
    			    });
    		}
    	})
    });
    </script>
    </head>
    <body>
    </body>
    </html>
    
  3. Testando consultas FQL através do Graph API Explorer
  4. O Facebook disponibiliza uma ferramenta de apoio à desenvolvedores muito útil, chamada Graph API Explorer. Através dela é possível testar e elaborar suas FQLs. Através dessa ferramenta você pode habilitar/desabilitar permissões de forma on-line durante os testes de FQL. Lembrando que o acesso à algumas informações precisam de permissão do usuário para que seu aplicativo possa acessá-las.

    Para testar/debugar suas FQLs, abra o Graph Explorer e clique no botão FQL Query. Antes de inserir/elaborar sua FQL, clique no botão Obter Token de Acesso e selecione as permissões que sua app necessita solicitar para que sua FQL atinja o objetivo de obter as informações que precisa.

    http://developers.facebook.com/tools/explorer
    ScreenShot170

    Em seguida selecione as permissões desejadas. Veja na figura abaixo, que escolhei algumas permissões interessantes para realizar alguns testes bacanas: (email, user_likes, user_photos, user_about_me, user_birthday, user_games_activity).

    Lembre-se que o acesso à algumas informações precisam de determinadas permissões do usuário. Por exemplo, para ter acesso às fotos e álbuns publicadas pelo usuário, você vai precisar que ele aprove a permissão user_photos.

    Para uma referência completa sobre as permissões possíveis, acessar o link:
    http://developers.facebook.com/docs/reference/login/

    ScreenShot171

    Após clicar no botão Get Access Token você já esta apto a testar suas FQLs. Veja exemplo abaixo:

    ScreenShot172

  5. Exemplos interessantes de FQL
  6. Selecionei abaixo alguns exemplos de FQL para que você possa ter uma idéia do que é possível fazer. Dependendo da informação que precisa, aconselho a consultar o link que contém a referência das tabelas existentes para consulta no Graph API ou que procure já a FQL pronta consultando no google. Vamos aos exemplos:

    • Selecionar todos amigos do usuário que estão usando o seu aplicativo:
    • SELECT uid, name FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me()) AND is_app_user = 1
    • Verificando se usuário curtiu determinada fan page:
    • SELECT uid FROM page_fan WHERE page_id = page_id AND uid = me()
      --- trocar page_id pelo id da fanpage
    • Obtendo todas fotos pertencentes ao usuário:
    • SELECT src, caption FROM photo WHERE owner=me()
    • Seleciona o id, nome e foto dos seus amigos, limitando o resultado em 25 registros:
    • SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 25)
    • Obtém detalhes dos álbuns do usuário:
    • SELECT aid, owner, name, object_id FROM album WHERE owner=me()
    • Obtém as notificações do usuário que ainda não foram lidas
    • SELECT notification_id, sender_id, app_id, icon_url, title_html, body_html, href 
      FROM notification WHERE recipient_id=me() AND is_unread = 1 AND is_hidden = 0
  7. Limitações de FQL

    Selecionei abaixo algumas limitações presentes no FQL e que normalmente geram dúvidas para desenvolvedores que estão iniciando no desenvolvimento de FQLs:

    • Não é possível criar consultas com JOINs (Um alternativa é utilizar sub-selects)
    • Não é possível Utilizar * : SELECT * (Você tem que especificar todas as colunas que deseja obter da tabela)
    • Não é possível utilizar funções básicas como sum(), count(), etc.

Avançando em seus aplicativos para facecbook

Confira vários outros artigos sobre desenvolvimento para facebook no blog:
Artigos Facebook

Curso rápido e completo sobre desenvolvimento de aplicativos para facebook:
http://www.temporealeventos.com.br/?area=267-Criando-Aplicativos-para-Facebook-Usando-SDK-de-PHP-e-Javascript


Ler Post Completo | Make a Comment ( None so far )

Recently on Pasqua Tecnologia…

Utilizando Zend Framework 2 no modo StandAlone

Posted on julho 4, 2013. Filed under: PHP, Zend Framework | Tags:, , |

Publicação: Unicode, Os Segredos da Codificação de Caracteres

Posted on julho 4, 2013. Filed under: Palestras, PHP | Tags:, , , |

Zend Framework 2: Renderizando uma view diferente do Action padrão do Controller

Posted on maio 29, 2013. Filed under: PHP, Zend Framework | Tags:, , , |

Zend Framework 2: Redirecionamento de Rota

Posted on maio 29, 2013. Filed under: PHP, Zend Framework | Tags:, , , |

Webservices SOAP com Zend Framework 2

Posted on maio 18, 2013. Filed under: PHP, Zend Framework | Tags:, , , , |

Zend Framework 2: Criando View Helpers para formatação de CPF e CNPJ

Posted on maio 4, 2013. Filed under: PHP, Zend Framework | Tags:, , , |

Zend Framework 2: Retornando dados no formato JSON no Controller

Posted on abril 30, 2013. Filed under: PHP, Zend Framework | Tags:, , |

Zend Framework 2: Desabilitando a renderização do Layout e View

Posted on abril 30, 2013. Filed under: PHP, Zend Framework | Tags:, , |

Zend Framework 2: Renderizando a view dentro do Controller

Posted on abril 30, 2013. Filed under: PHP, Zend Framework | Tags:, , |

Liked it here?
Why not try sites on the blogroll...

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 80 outros seguidores

%d blogueiros gostam disto: