Postando em uma Página do Facebook com PHP (CURL)

Obs: Tem um vídeo no final do post onde ensino tudo isso.

Resolvi criar esse tutorial para ajudar pessoas que precisam publicar um texto ou link em uma página do Facebook.

Exemplo de utilização: você tem um site e quer que logo após postar uma notícia que ela seja seja compartilhada no Facebook em forma de link para trazer leitores pro seu site.

Minha motivação para esse tutorial foi que depois de perder horas pesquisando na internet e na documentação do Facebook, descobri que é simples fazer isso sem o SDK deles.

Primeiro, temos que pegar o token de acesso para o local em que desejamos postar, seja na timeline de uma pessoa ou de uma página.

Nesse exemplo vamos publicar em uma página, mas o procedimento para publicar em uma timeline de pessoa é ainda mais simples, abordarei isso rapidamente no vídeo do final.

Acessamos o seguinte link para pegar o token:

https://developers.facebook.com/tools/explorer/

Primeiro selecionamos o app que será utilizado.

Em seguida clicamos em “Get token” e depois em “Get user access token”, e na janela que se abre marcamos uma dessas opções: manage_pages e publish_stream.

Após marcar as opções clicamos em “Get Access Token”.

Nas telas seguintes autorize o que o Facebook perguntar.

Segundo passo é pegar o ID da página desejada.

Clique novamente no botão “Get Token” e note que agora ele mostra todas as páginas que você tem acesso, selecione a desejada e clique no botão azul Submit.

Isso exibirá o ID da página, copie ele e também o “Access Token” que fica no input acima (o access token tem validade curta, no vídeo ensino como pegar um de maior duração).

Com essas duas informações vamos ao código necessário:

Obs.: caso não tenha o CURL instalado, clique aqui.

<?php
$page_access_token = 'XXXXXXX';
$page_id = 'YYYYYYYY';

// E as informações do que será postado.
$data['picture'] = "http://www.exemplo.com/imagem.jpg";
$data['link'] = "http://www.seulink.com.br/";
$data['message'] = "Mensagem (opcional)";
$data['caption'] = "Legenda (opcional)";
$data['description'] = "Descrição do link (opcional)";

Na verdade todos os campos acima são opcionais desde que ou o link ou o message estejam presentes.

Para mais informações aqui está a documentação: https://developers.facebook.com/docs/reference/api/post/

Continuando…

$data['access_token'] = $page_access_token;
$post_url = 'https://graph.facebook.com/'.$page_id.'/feed';

// E pra finalizar fazemos o post para o Facebook:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
curl_close($ch);
?>

O retorno o ID do post que poderia ser utilizado para apaga-lo ou edita-lo ou um erro.

Espero que isso resolva o problema de muita gente, pois a documentação do Facebook é péssima quando você quer uma coisa mais prática, eles tentam sempre te empurrar o SDK, o que não é necessário para coisas simples como essa.

Links úteis:

 

Encontrando arquivos pela data no Linux

Há momentos em que você precisa encontrar arquivos no linux que foram criados ou modificados em um determinado intervalo de tempo.

Por exemplo, você tem aquele WordPress de um cliente que não costuma atualizar os plugins e o próprio WordPress e acaba sendo vítima daquele código malicioso que muitas vezes acaba gerando um alerta no Google e o site acaba bloqueado com aquele aviso vermelho quando você tenta editar.

Então você cadastra o site no Google Webmaster Tools e descobre quais arquivos estão infectados.

Mas acredite, isso é só o começo.

Além dessa ferramenta do Google e outras ferramentas não dizerem todos os arquivos infectados, eles normalmente não dizem como resolver.

Mas você é esperto, você tinha um backup do site sem os arquivos infectados.

Então você sobe os arquivos do backup substituindo todos os infectados e problema resolvido.

#SóQueNão!

É bem comum eles criarem novos arquivos infectados, pois esperam que a primeira coisa que o dono do site faça é jogar um backup lá.

Então qual a solução?

São várias, mas uma bem prática é o assunto desse artigo.

Vamos encontrar arquivos editados dentre um intervalo de datas, pois como você já identificou um ou mais arquivos, é bem provável que os outros sejam da mesma data.

Encontrando arquivos mais novos do que a data X (sempre no formato americano yyyy-mm-dd):

find ./ -newermt "2016-03-05"

Encontrando arquivos editados nos últimos 15 dias:

find ./ -mtime -15 -print

Lembrando que você pode procurar em tipos espefíficos de arquivos, como arquivos PHP, adicionando no comando:

-iname "*.php"

Então ficaria:

find ./ -iname "*.php" -mtime -15 -print

Encontrando arquivos do dia X ao dia Y:

find ./ -newermt "2016-02-04" -and -not -newermt "2016-03-03"

 

Referências:
http://www.cyberciti.biz/faq/howto-finding-files-by-date/
http://www.cyberciti.biz/faq/linux-unix-osxfind-files-by-date/
http://stackoverflow.com/questions/158044/how-to-use-find-to-search-for-files-created-on-a-specific-date

 

Pesquisa de Satisfação Sinvepes

Da necessidade de de saber o pensamento do cliente a Sinvepes precisou criar uma pesquisa e contratou os serviços da SurrealAD. Bom, indo ao que interessa: este pequeno módulo adicionado ao site da Sinvepes armazena os dados que o cliente respondeu no banco de dados da Sinvepes. Os resultados do teste são visualizados do sistema de gerênciamento de conteúdo (CMS) do site.

  • Tecnologias aplicadas

PHP, MySQL, JavaScript

  • Ano de publicação

2011

  • Endereço

http://www.sinvepes.org.br/pesquisa

  • Storyboard

As minhas metas

Sempre que eu estiver com um tutorial em mente avisarei na home os próximos tutoriais.

Minha intenção não é tornar o blog um site de notícias nem prender ninguém. Aquelas metas são pra mim mesmo. Para que eu não esqueça ou não tenha preguiça.

Vou sempre postar um novo tutorial quando…

  • for de utilidade pra muita gente
  • for eu corrigir um problema dificil
  • for cultura
  • for engraçado

Nos vemos por ai! ^^

Portfolio

Abaixo listo os projetos que participei da programação, alguns deles estruturando o layout das páginas internas. Os que já foram substituídos por novos sites não estão na lista.

E-commerces
loja.moveisconquista.com.br
loja.sorvedoces.com.br
shop.luisameirelles.com
www.avontsrio.com.br
www.juliapak.com.br

Blogs
www.andreiafriques.com.br
www.luisameirelles.com
www.mariama.com.br
www.raianesenna.com.br

Imobiliárias e Construtoras
www.aliancaimoveis.com.br
www.barbosaeng.com.br
www.bertoliengenharia.com.br
www.conmarconstrutora.com (site e mobile)
www.construtoraepura.com
www.decastroengenharia.com.br
www.espaçoconstrutora.com.br
www.galwan.com.br
www.galwan.com.br/nelson-prest
www.grupomarcoimoveis.com.br
www.icaconstrutora.com.br
www.inocoopes.com.br
www.praiaimobiliaria.com.br
www.veranoresidencialclube.com
www.villanegocioseimoveis.com.br

Sites empresariais
www.aequilibrio.com.br
www.aryanesteinkopf.com.br (site antigo, já saiu do ar, só mantenho na lista porque foi marcante trabalhar nele)
www.atacadosvitoria.com.br
www.batistaadvogados.com
www.benevix.com.br
www.buaizalimentos.com.br (site e mobile)
www.centrojur.com.br
www.cesg.com.br
www.ceste.com.br
www.coopeavi.com.br
www.coopeaviovos.com.br
www.crmrolamentos.com.br
www.daniellysimmer.com
www.dnaempresas.com.br
www.elsons.com.br
www.grupovsg.com.br
www.informatizabrasil.com.br
www.lacirbacelar.com.br
www.lucios.com (site e mobile)
www.marcocondominial.com.br
www.marcocontabilidade.com.br
www.marvisegdobrasil.com.br
www.moveisconquista.com.br
www.myclosett.com
www.nefe.com.br
www.nscafe.com
www.nsimporter.com
www.rbermudes.com.br
www.smsaude.com.br
www.sorvedoces.com.br (site e mobile)
www.stonedesign.com.br
www.tonaestradaslz.com.br
www.vivacatamaran.com.br
www.vixplus.com.br