Archive for julho \27\-02:00 2013

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 )

Utilizando Zend Framework 2 no modo StandAlone

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

Introdução

O Zend Framework 2 fornece uma API extremamente rica, bem elaborada e bem testada. Possui componentes muito úteis para qualquer projeto de desenvolvimento web.

Neste artigo vamos aprender como configurar o Zend Framework 2 de forma StandAlone. Isso significa que podemos usar os componentes do Zend Framework de forma isolada e independente da estrutura MVC fornecida.

Instalando e Configurando o Ambiente

  1. Download do Zend Framework
  2. Acesse o link http://framework.zend.com/downloads/latest#ZF2 e baixe a última versão disponível para o Zend Framework 2, clicando no botão Download e escolhendo o formato desejado (zip para ambientes windows ou tar.gz para ambientes Linux). Obs: O pacote minimal normalmente é suficiente para a maioria das necessidades.

  3. Descompacte o pacote e grave o caminho completo de instalação
  4. Ao descompactar o pacote do Zend Framework, será criada uma estrutura de diretórios contendo os componentes do framework. Obtenha o caminho completo de instalação, incluindo o subdiretório library/ para podermos setá-lo no include path do php. No meu caso, o caminho completo ficou sendo:
    /home/douglas/ZendFramework-minimal-2.x.x/library/

  5. Configurando o include path e autoloader
  6. Vamos criar um arquivo header.php que deverá ser incluído em todos os seus scripts que utilizarão componentes independentes do Zend Framework 2. Esse arquivo é responsável por configurar o caminho do framework no include path do PHP e por configurar o Auto Loader padrão para as classes presentes no framework da Zend.

    Veja que estamos o componente StandardAutoLoader do próprio Zend Framework. É um autoloder compatível com PSR-0:

    PS: Lembre-se de alterar o caminho especificado na variável $zf2_path de acordo com o caminho da sua instalação:

    <?php
    $zf2_path = '/home/douglas/ZendFramework-minimal-2.x.x/library/';
    set_include_path(get_include_path() . PATH_SEPARATOR . $zf2_path);
    
    require_once($zf2_path . '/Zend/Loader/StandardAutoloader.php');
    $loader = new Zend\Loader\StandardAutoloader(
            array(
                    'namespaces' => array(
                            'Zend' => $zf2_path . '/Zend',
                    ),
                    'fallback_autoloader' => true,
            )
    );
    $loader->register();
    

Exemplos de uso

Neste momento já temos o ambiente pronto para que você possa usar os componentes do Zend Framework2 de forma independente. Basta incluir o arquivo header.php criado anteriormente e instanciar as classes desejadas. Abaixo eu reuni alguns exemplos simples e interessantes. Aconselho você consultar a documentação de referência no próprio site do projeto para mais componentes e para mais detalhes sobre suas utilizações. (Veja o link na área Referências)

Os componentes utilizados no exemplo abaixo foram: Zend\Validator, Zend\Http, Zend\Crypt, Zend\Mail, Zend\Log, Zend\Json e Zend\Filter

<?php
// inclui header zf2 autoload
require_once("header.php");

$validator = new Zend\I18n\Validator\Alnum();
var_dump($validator->isValid('Abcd')); // true
var_dump($validator->isValid('teste??')); // false

// Realizando requisicoes HTTP GET
$request = new Zend\Http\Request();
$request->setUri('http://www.google.com/search?q=php'); // URL traz resultado de busca por PHP
$request->setMethod('GET'); // method

$client = new Zend\Http\Client();
$response = $client->dispatch($request);

$content = $response->getBody(); // corpo do retorno da requisicao
var_dump($content); 

// criptografia
$bcrypt = new Zend\Crypt\Password\Bcrypt;
$str_encrypted = $bcrypt->create('Pasqua Tecnologia');
var_dump($str_encrypted);

var_dump($bcrypt->verify('Pasqua Tecnologia', $str_encrypted)); // true
var_dump($bcrypt->verify('Pasqua', $str_encrypted)); // false

// enviando email
use Zend\Mail;

$mail = new Mail\Message();
$mail->setBody('Corpo do email.');
$mail->setFrom('suporte@dominio-exemplo.org', 'Suporte');
$mail->addTo('douglas.pasqua@gmail.com', 'Douglas V. Pasqua');
$mail->setSubject('Apenas Teste do ZF2 Mail');

$transport = new Mail\Transport\Sendmail();
$transport->send($mail); // envia o email

// logging
$writer = new Zend\Log\Writer\Stream('/tmp/logfile');
$logger = new Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info('Mensagem Informativa'); // grava mensagem no log /tmp/logfile

// JSON
$phpNative = array('nome' => 'Douglas V. Pasqua', 'idade' => 30);

$json = Zend\Json\Json::encode($phpNative);
var_dump($json);

// Filtros
$strtolower = new Zend\Filter\StringToLower;
echo $strtolower('I LOVE ZF2!'); // i love zf2!

Referências

http://framework.zend.com/manual/2.2/en/index.html

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

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

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

Segue o acesso aos slides da palestra sobre Unicode, Os Segredos da Codificação de Caracteres: (através do slideshare)

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

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

%d blogueiros gostam disto: