
Essa segunda parte da série "Integrando o Facebook ao seu site" começou complicada já na escolha do título, não conseguia decidir qual complemento usar: "Atualizando o Mural do Usuário" ou "Postando no Mural do Usuário". Em inglês parece muito mais simples, muito mais!
É necessário que você tenha lido a primeira parte do artigo, caso não tenha feito ainda, corre lá.
Agora que cheguei a uma decisão, já desabafei, você já deve ter lido o primeiro artigo, já está com todos os arquivos em mãos, vamos parar de papo e vamos para o que interessa.
Permissões
Depois de levar muita bola nas costas, o Facebook aprendeu sobre privacidade (e a falta dela). Existe uma extensa lista de tipos de permissão que sua aplicação pode solicitar ao usuário, disponível na documentação da api, mas para o nosso exemplo, vamos precisar especificamente da permissão publish_stream, que libera a aplicação para atualizar o status do usuário a qualquer momento, assim como criar comentários e curtir conteúdos.
Code is Beautiful
Quem não concorda com isso, está no lugar errado!
Uma vez que já temos a permissão escolhida, vamos montar o código necessário para pedir a autorização e postar algum conteúdo no mural do usuário. Estou considerando que você já fez o download da SDK do Facebook no GitHub (lembre-se do primeiro artigo, jovem Padawan):
require 'php-sdk/src/facebook.php';
$facebook = new Facebook(array(
'appId' => '125178627581346',
'secret' => '9fcc6b62c0f23c337d8ecb9aec27d155'
));
$user = $facebook->getUser();
if ($user) {
$post = array(
'message' => 'I may be paranoid... but not an android...'
);
$facebook->api('/me/feed', 'POST', $post);
} else {
$loginURL = $facebook->getLoginUrl(array(
'scope' => 'publish_stream'
));
echo "«a href="\"".$loginURL."\""»";
}
Lembrem-se, isso é só um exemplo (extremamente tosco simples). Explicando:
- Linha 1: Requisita a biblioteca do facebook;
- Linha 3 a 6: Instancia a biblioteca, passando os tokens da aplicação ParanoidAndroid (aqui você substitui pela sua aplicação);
- Linha 8: Recupera o usuário;
- Linha 11 a 13: Caso o usuário tenha liberado o acesso da aplicação, monta a mensagem que vai ser postada no mural do usuário;
- Linha 14: Efetua a postagem;
- Linha 16 a 18: Caso o usuário não tenha liberado ainda o acesso da aplicação, monta a URL para solicitar permissão, informando o tipo de permissão necessária;
- Linha 19: Imprime a URL para se logar pelo Facebook.
Neste exemplo, (lembrando novamente, simples), postamos uma mensagem no mural do usuário, mas você pode postar qualquer coisa (desde que seja possivel via a própria aplicação do facebook). Dê uma olhada na lista completa do que você pode postar aqui.
Com isso temos, basicamente, um sistema que permite que sua aplicação, poste algo no mural do usuário, mediante a permissão do usuário.
Caso queira ver a "aplicação" funcionando, dê uma olhada no meu site. Para fazer o download dos fontes, clique aqui
That's all folks, aguardem, mais artigos estão por vir :)
Links úteis
- https://developers.facebook.com/docs/reference/api/post/
- https://developers.facebook.com/docs/reference/api/permissions/
Leia também:
- PHP: Integrando o Facebook ao seu site – parte 1 – Acessando o perfil público
- PHP: Integrando o Twitter ao seu Site – Autenticação de Usuários
- PHP: Integrando o Twitter ao seu Site – Extra (Mais comandos da API)
- PHP: Integrando o Twitter ao seu Site – Parte 3 (Agora com OAuth)
- PHP: Integrando o Twitter ao seu Site – Parte 2
tem um erro na linha 19
echo “Logar no facebook“;
se tirar esse %5c não acontece nada ao clicar no botao de login, se deixar como está aparece o erro: unexpected T_STRING, expecting ‘,’ or ‘;’
tentei concatenar, não deu certo.
e tb tentei deixar assim:
echo ‘login‘;
não funcionou. E agora, o que faço?
Jonas, muito obrigado pela correção, estava faltando a variável correta, o post já está corrigido.
Henrique,
Você sabe como postar no mural usando parâmetro de privacidade? Por exemplo: postar só para eu mesma ver.
Henrique, solucionei meu problema.
A resposta estava no link https://developers.facebook.com/docs/reference/api/post/ que você postou no final. Obrigada.
Alguem sabe como eu mando uma mesma postagem para várias pessoas? eu consegui mandar para uma pessoa especifica trocando o ‘me’ pelo id dela… mas eu queria mandar para varias ao mesmo tempo…
Cara,
como eu faço pra depois de aceitar as permissões de usuário, o usuário ser redirecionado para uma outra página do meu site?
Flário, creio que o que tu precisa são as ações em lote (batch) https://developers.facebook.com/docs/reference/api/batch/
Isso deve resolver:
$loginURL = $facebook->getLoginUrl(array(
‘next’=>’http://url_desejada‘
));
Henrique, vlw mesmo pela resposta, n era isso que eu queria mas eu tava precisando disso tb =D.
Meu problema é, eu quero mandar um post para uma pessoa, mencionando outras pessoas. Pq eu quero que as outras pessoas comentem nesse mesmo post e vire uma grande thread de comentarios, sakou?
n sei se expliquei direito. Se vc tiver gtalk me add pra gente conversar sobre isso.. tou iniciando agora no desenvolvimento pro facebook: flavioribeirom@gmail.com
Vlw pela ajuda. :c
Pelo que eu entendi, é isso que tu precisa http://digitizor.com/2011/01/24/tag-user-facebook-graph/
Primeiramente parabens pelas postagens do blog, alto nível, mê ajudou muito a fazer integração com twitter e facebook.
Gostaria de saber se é possível postar a imagens e conteúdo html no status do usuário.
No aguardo
Obrigado
Sim, é possivel Dadivson, vai ser um dos assuntos dos próximos post.
É possível fazer este post sem precisar estar com o navegador logado? Assim como no Twitter eu faço.
Sim, e da mesma forma, guardando os tokens liberados após a autorização do usuário
Fala Henrique ,blz ?! Parabéns pelos seus POSTs cara tem me ajudado bastante ! Cara , fiz o que seu tuto ,mas aparece uma página em branco para min, sabe por que ? Eu criei o APP certinho , até fiz a Open Graph
Por acaso, tu está testando em localhost? Chegaste a colocar em um servidor de testes?
Esse codigo so funciona se estiver em um servidor online, não funciona em localhost?
Vi que diferente do exemplo do twitter, neste aki não é definido uma callback_url!
O facebook não funciona em localhost
olá Henrique…
tem como pegar o email do usuário?…
se tiver tem como vc dar essa dica tentei de todo geito mas não consigo já dei permissão e tudo qual seria o nome do post do email?
vlw abrass
Você pode pedir permissão para acessar o e-mail do usuário, e somente dele: https://developers.facebook.com/docs/reference/api/permissions/
cara tentei aqui mas apareceu uma mensagem de erro:
“Fatal error: Uncaught exception ‘Exception’ with message ‘Facebook needs the CURL PHP extension.’ in F:\www\webiblia\m-leitura\php-sdk\src\base_facebook.php:19 Stack trace: #0 F:\www\webiblia\m-leitura\php-sdk\src\facebook.php(18): require_once() #1 F:\www\webiblia\m-leitura\index.php(2): require(‘F:\www\webiblia…’) #2 {main} thrown in F:\www\webiblia\m-leitura\php-sdk\src\base_facebook.php on line 19″
O erro é bem claro, está faltando a lib cURL http://php.net/manual/en/book.curl.php na tua instalação do PHP
Apos ir para a pagina de permissão e eu aceitar, quando volta pra pagina no meu site aparece uma msg de erro, testei no seu próprio que vc colocou no seu site e deu o mesmo erro.
Olá Thiago, acabei de testar a URL que está disponivel no site e funcionou perfeitamente. Que erro ocorreu para ti? Se tudo ocorreu com sucesso, deve ter postado uma mensagem no teu mural.
Olha, postei nesse link http://espacoipanema.com/fb1/fb/ dê uma olhada, comigo está dando erro, e eu nao alterei nada do php somente o appid e o secret
aki o link com o print da tela que ta dando erro http://imm.io/fiE6
Faz um teste, testa essa mesma aplicação no firefox (vi que tu está testando no chrome). Eu reproduzi o problema no chrome, mas no firefox funcionou :/
Cara, vi que você é gente boa! Então é o seguinte, estou precisando de um script desse mais que crie um album novo e poste uma imagem nele, igual aqueles apps de “Veja sua morte” Meu emprego”…. teria como me ajudar?
Cara, em primeiro lugar parabéns pelo script. Mas aqui não tá funcionando…
Quando clico no logar no facebook dá esse erro:
Erro
Ocorreu um erro em Novos Eventos. Tente novamente mais tarde.
API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: Invalid redirect_uri: A URL informada não é permitida pela configuração do aplicativo.
Eu tenho que habilitar algum coisa ou algo do tipo!?
Abraços,
Por acaso tu setou a URL do site? Você está rodando a aplicação dentro do dominio da URL que você setou?
Ah cara, valeu a resposta….Arrumei aqui. Tinha que preencher no App on Facebook os endereços de Canvas URL
;)
Valeu cara, agora vou fuçar aqui e tentar enquadrar…Mas show de bola seu post hein parabéns…Depois cria uma forma de receber suas postagens por email certo?!
Pois eu não achei…Você tem?
Flw.
Por e-mail eu não tenho atualmente, mas tu pode assinar o feed RSS (http://blog.hboaventura.com/feed) ou ainda me seguir no twitter @kidh0 (http://www.twitter.com/kidh0) nos dois você sempre vai ter atualizado o conteudo e de quebra, no twitter, algumas dicas legais.
Boa noite Henrique,
Você sabe mê informar se houve alguma mudança de publish_stream ou obter e-mail do usuário na API recentemente? Digo isso porque os novos aplicativos que criei não permitem de maneira alguma obter e-mail do usuário e nem publicar no seu mural. Abre a tela pedindo permissão ao usuário mas não mostra publish_stream e email. Estranho que meus aplicativos antigos continuam funcionando mas os novos não permitem de forma alguma.
Desde já agradeço pela atenção.
Att;
Davidson Ferreira
Verifica se as tuas permissões estão de acordo com as últimas especificações https://developers.facebook.com/docs/reference/api/permissions/
Obrigado pela dica Henrique, mas estranhamente o método getLoginUrl() estava redirecionando para http://www.facebook.com/connect/uiserver.php?app_id=…. ai troquei o getLoginUrl(array(‘scope’ => ‘email,publish_stream’)) por getLoginUrl(array(‘req_perms’ => ‘email,publish_stream’)) e funcionou.
Mas não encontrei nada na documentação sobre a mudança de ‘scope’ para ‘req_perms’.
Obrigado e parabens pelo blog.
Ola, tenho uma rede social, as postagens de minha pagina já estão integradas ao facebook, gostaria de saber se é possivel uma aplicação para que as postagens do facebook apareçam na minha pagina.
grato
Sim, você pode recuperar as postagens das páginas do facebook https://developers.facebook.com/docs/reference/api/page/
Olá Henrique,
Estou desenvolvendo um aplicativo no Facebook, o mesmo será distribuido e instalado na fan page dos usuários, dai vem minha dúvida e dificuldade:
Vou utilizar um único banco de dados para todas as distribuições instaladas nas fan page, identificando pelo id do usuário no facebook, mas como saber em qual fan page o aplicativo foi instalado para mostrar apenas conteúdo daquela fan page?
Na prática preciso saber o nome da fan page do aplicativo acessado mas não sei se tem um método na api que permita saber isso. Grato pela atenção.