Archive for setembro \29\-02:00 2012

Facebook php sdk, postando mensagens no mural do usuário

Posted on setembro 29, 2012. Filed under: Facebook, PHP | Tags:, |

Introdução

Já mostramos em artigo anterior como publicar (upload) e marcar fotos na linha do tempo dos usuários. Neste arigo, vamos mostrar algo mais simples. Como postar mensagens simples na linha de tempo do usuário. Não iremos fazer o upload de fotos, será simples publicação de textos no feed de notícias, podendo linkar imagens e vídeos externos. É um método bem parecido com o visto anteriormente, porém com algumas pequenas diferenças.

Um dos pré-requisitos é que você já tenha criado uma app no facebook. Mais detalhes, acesso o meu outro artigo, Criando Aplicativos Para Facebook Usando SDK Do PHP

Para que sua app possa postar mensagens na linha de tempo do usuário, você deve solicitar a permissão publish_stream.

Solicitando permissão publish_stream.

// verifica a permissao publish_stream
$permissions = $facebook->api("/me/permissions");
if(!array_key_exists('publish_stream', $permissions['data'][0])) {
   header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")) );
   exit;
}

Para mais detalhes sobre como solicitar permissões, verifique meu outro post Facebook App: Requisitando permissões pela API do PHP

Post simples no feed de notícias

Vamos demonstrar abaixo a forma mais simples de publicação no mural através de app. Os principais campos são message, name e link.

$facebook->api("/me/feed", "post", array(
          'message' => "Site para desenvolvedores da linguagem PHP",
          'name' => "Site Oficial do PHP",
          'link' => "http://www.php.net",
));

Descrição dos campos

  • link: Link anexado na publicação
  • name: Nome do link
  • message: A mensagem contida na publicação

Veja o resultado comentado:

Linkando uma imagem no post

Veja que no post anterior não parametrizamos nenhuma imagem. O próprio mecanismo de post do facebook escolheu uma imagem “relevante” contida no link informado no post. Porém, através da lib do sdk, podemos determinar qual vai ser a imagem anexada no post. Para isso, informamos o campo picture.

Veja código abaixo:

 $facebook->api("/me/feed", "post", array(
           'message' => "Site para desenvolvedores da linguagem PHP",
           'name' => "Site Oficial do PHP",
           'link' => "http://www.php.net",
           'picture' => "http://www.exemploteste.com.br/elefante-php.png",
));

A única diferença aqui é o campo picture que foi adicionado. Ele informa qual será o link para uma imagem anexada no post. Vale atentar aqui, que a imagem não será publicada no perfil do usuário do facebook. Ela não será incluída dentro de nenhum álbum do usuário, como já vimos no artigo anterior, Manipulando fotos no facebook com sdk para php. Será incluído apenas um link para uma imagem externa, acessível através de uma URL.

Veja abaixo o print da postagem:

Veja que agora definimos a imagem que será exibida junto com a postagem. Diferente do post anterior que o próprio mecanismo do facebook escolheu uma imagem para ser anexada.

Linkando um vídeo no post

Veremos agora, como incorporar na postagem, um link para vídeo. No caso é um link para um vídeo no youtube: PHP Tutorial #1. Para tal, devemos usar o parâmetro source. Vamos trocar o campo picture do exemplo anterior pelo campo source.

$facebook->api("/me/feed", "post", array(
          'message' => "Tutorial básico de PHP no Youtube",
          'name' => "Video Aula de PHP",
          'link' => "http://www.youtube.com/watch?v=Txj4mj5yom0",
          'source' => "http://www.youtube.com/e/Txj4mj5yom0",
          'caption' => "www.youtube.com",
));

Veja que no código acima, informamos o parâmetro source que deve ser um link direto para o vídeo. Esse video poderá ser assistido dentro do próprio facebook. A URL definida no parâmetro link será aberta em uma nova janela quando você clicar no link da postagem. Nesse caso será aberto a página do youtube referente à vídeo aula.

Veja abaixo o print da postagem:

Perceba também, nessa última postagem, que usamos um novo parâmetro chamado caption. É o caption do link exibido logo abaixo do nome (campo name) da postagem. Ao invés de exibir o link http://www.youtube.com/watch?v=Txj4mj5yom0, será exibido somente http://www.youtube.com

Referência
Para mais opções referente a postagem de mensagens no facebook, acesse a documentação oficial: http://developers.facebook.com/docs/reference/api/post/

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

Dica PHP, identificando automaticamente o formato de imagem

Posted on setembro 21, 2012. Filed under: PHP, Tips | Tags:, , , |

Essa dica simples é para você que precisa identificar automaticamente o formato de um determinado arquivo de imagem. Por exemplo, se é no formato jpeg, png, gif, etc. Útil no caso onde você precisa enviar uma imagem para o navegador, onde o tipo de imagem é incerto, podendo ser de qualquer formato.

Uma forma de resolver essa questão, seria tentar definir o formato da imagem através da extensão do nome do arquivo(.jpg, .png, .gif, etc.), usando um switch/case. Porém podemos resolver isso de uma forma automática, que é muito mais eficiente, fazendo o uso das funções getimagesize() e image_type_to_mime_type().

Veja exemplo abaixo:

<?php
// caminho da imagem será obtido de forma dinâmica
// para esse exemplo estamos definindo de forma estática
$caminho_imagem = "teste.jpg";

// identificando o mime type do arquivo automaticamente
$info = getimagesize($caminho_imagem);
$mime_type = image_type_to_mime_type($info[2]); 

// neste caso, o mime_type será "image/jpeg"
header("Content-Type: $mime_type");
// enviando a imagem para o navegador
readfile($caminho_imagem); 

Já no caso abaixo, o mime type será “image/png”

$caminho_imagem = "teste.png";

// identificando o mime type do arquivo automaticamente
$info = getimagesize($caminho_imagem);
$mime_type = image_type_to_mime_type($info[2]); 

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

IE Problemas com cookies dentro de iframe (facebook)

Posted on setembro 16, 2012. Filed under: Facebook, Tips | Tags:, , , |

Introdução

Tive um problema um tanto quanto curioso. Após criar uma app no facebook e usá-la dentro de um Page Tab, que permite acessar a app dentro de uma fan page do facebook, tive um problema de acesso dentro da aplicação após a criação da sessão do facebook. O problema ocorre somente no IE, com a página da app sendo carregada dentro de um iframe. Na página inicial, após realizado o login no facebook, a aplicação direciona o usuário para uma página interna, onde somente usuários autenticados podem ter acesso. Em todos navegadores, a página interna funcionava perfeitamente. Menos o IE, que perdia a sessão do usuário após o login inicial. Porém, fora do Page Tab, ou seja, fora do iframe, a aplicação funcionava normalmente, até no IE.

Após pesquisas, descobri que por padrão o IE bloqueia third-party cookies. No caso o IE bloqueou os cookies que estavam sendo acessados dentro uma página que estava dentro de um iframe. É uma política de segurança que o IE adota, seguindo uma especificação do W3C conhecida como Platform for Privacy Preferences ou somente P3P. Para resolver o problema foi bem simples. Basta adicionar o header abaixo em todas as páginas php de sua aplicação que setam cookies. Esse header irá permitir que o IE aceite third-party cookies.

header('p3p: CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"');

Ah, lembre-se de setar o header no php antes de qualquer saída de texto.

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

Habilitando e desabilitando elementos com JQuery

Posted on setembro 7, 2012. Filed under: JavaScript, JQuery, Tips | Tags:, , , |

Introdução

Habilitar e desabilitar elementos em sua página, torna-se uma tarefa simples quando se trata de JQuery. Neste artigo iremos manipular o atributo disabled, usado para controlar se o elemento esta habilitado ou desabilitado, usando o método prop() ao invés de attr(), que é mais específico para esta finalidade.

Veja abaixo alguns exemplos:

Desabilitando elementos:

// desabilitando determinado elemento
$('#id_elemento').prop('disabled', true);

// desabilitando todos elementos dentro de tag <div>
$('div *').prop('disabled', true);

// desabilitando somete elementos do tipo input e button dentro de tag <div>
$('div').find('input, button').prop('disabled', true);

// desabilitando todos tipos de input (input, textarea, select, button) dentro de tag <div>
$('div').find(':input').prop('disabled', true);

Habilitando elementos:

Use o mesmo método prop() conforme anteriormente, mas setando o valor para false.

$('#id_elemento').prop('disabled', false);
...

Considerações

O método prop() foi adicionado à partir da versão 1.6 do jquery. Use prop() ao invés de attr() para atributos como disabled, checked, selected, etc. São atributos considerados “booleanos” na especificação W3C. Ele foi criado para esse propósito. Para maiores detalhes, acesse a documentação do JQUery: http://api.jquery.com/prop/

O método attr() pode fazer o trabalho de desabilitar e habilitar elementos também. Porém com a criação do prop(), o attr() deixou de ser a melhor forma de resolver essa questão. Utilize-o caso esteja com uma versão do jquery mais antiga, inferior à 1.6. Veja abaixo exemplos:

// desabilitando elementos
$('#id_do_elemento').attr('disabled', 'disabled');

// habilitando elementos
$('#id_do_elemento').removeAttr('disabled');
Ler Post Completo | Make a Comment ( 1 so far )

Dicas do comando find

Posted on setembro 3, 2012. Filed under: Linux, Tips | Tags:, |

Introdução

Neste artigo vamos informar alguns exemplos práticos do comando find. São exemplos que resolvem problemas que temos no dia a dia. Voltado para quem trabalha com administração de servidores Linux.

  • Encontrando arquivos que estão com problema de encoding no nome.
  • find . ! -regex '.*'

    Esse interessante comando do find, apesar de não ser específico para isso, irá listar todos arquivos que estão com erro de encoding no nome. Para mais informações como corrigir o encode do nome do arquivo, acesse:
    http://selectoid.wordpress.com/2009/07/23/a-commandline-preciousness-for-converting-filename-encoding-in-linux-convmv/

  • Removendo arquivos que foram criados/modificados a mais de x dias. No caso abaixo, serão removidos os arquivos modificados/criados à mais de 30 dias.
  • find . -type f -mtime +30 -exec rm -f {} \;
  • Procurando um pattern (require_once) dentro de arquivos que possuem a extensão .php, entrando nos níveis de diretório abaixo, de forma recursiva.
  • find . -name "*.php" -exec grep -Hi "require_once" {} \;
  • Esta dica é para você que precisa limpar um diretório que contém muitos arquivos. Usar somente o comando rm -f * no diretório irá gerar erro de lista de arquivos muito grande. A alternativa é usar o comando find combinado com o comando xargs, que irá limpar o diretório completo. O xargs irá passar os arquivos para o comando rm por partes.
  • find . -type f -print0 | xargs -0 rm
  • Procurando arquivos em apenas 2 níveis de sub-diretórios.
  • find . -maxdepth 2
  • Procurando arquivos/diretórios que possuem determinado dono de arquivo.
  • find . -user www-data
  • Procurando arquivos/diretórios que possuem determinado grupo de arquivo.
  • find . -group www-data
  • Procurando arquivos/diretórios que possuem determinado permissão.
  • find . -perm 644
  • Fazendo busca somente em diretórios.
  • find . -type d
  • Fazendo busca somente em arquivos.
  • find . -type f

Conclusão

É claro que esses exemplos não devem ser utilizados de forma rígida. O comando find é muito flexível, portanto fique livre para combinar seus parâmetros. As dicas acima podem ajudar em muitas situações diferentes.

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

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

%d blogueiros gostam disto: