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/

Make a Comment

Deixe uma resposta para Alex Cancelar resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

22 Respostas to “Facebook php sdk, postando mensagens no mural do usuário”

RSS Feed for Pasqua Tecnologia Comments RSS Feed

como postar no mural de alguem que tem o app instalodo?

oi Rafael, é possível postar no mural do usuário que tenha o app instalado através de access_token.
Vou publicar como trabalhar com access_token em próximos posts. Enquanto isso, além de pesquisar no google, leia algum dos docs abaixo:

http://developers.facebook.com/docs/opengraph/using-app-tokens/
https://developers.facebook.com/docs/authentication/

Boa sorte!

Obrigado, vou tentar.

Olá camarada, muito legal esse tutorial. Parabéns!

Deixa-me te perguntar uma coisa: Teria como, através de uma aplicação em php similar a essa, onde eu envie uma Mensagem a uma(s) pessoa(s)? Aquela Mensagem provada?

Obrigado pela atenção e sucesso.

Talles

Obrigado pelo contato Talles. Pelo que eu andei pesquisando, não existe uma documentação clara sobre esse tópico. Muitos dizem que não é possível enviar mensagens privadas pela app. Mas ainda vou estudar o caso e realizar alguns testes.

De qualquer forma, selecionei alguns links que podem te ajudar com o assunto:

http://stackoverflow.com/questions/2574431/facebook-api-send-private-messages-to-friends
http://stackoverflow.com/questions/2943297/how-send-message-facebook-friend-through-graph-api-using-accessstoken
http://stackoverflow.com/questions/4363515/sending-private-messages-through-facebook-api

Como fazer aplicativos para pagina do facebook utilizando foto e nome do perfil???
Ex:https://www.facebook.com/photo.php?fbid=159972967478697&set=a.159972960812031.40956.100003979854403&type=3&theater

Você gostaria de um aplicativo para publicar fotos em uma página do facebook ?

Verifique o artigo:
http://wp.me/pdjRF-Jm

Verifique a sessão Publicando fotos em uma fanpage do artigo acima.

Obrigado e Boa Sorte!

Olá amigo, primeiramente meus parabéns pelos artigos, estão sendo de grande valia. Criei um app que publica uma foto no mural do usuário, está funcionando ok, porém estou com problema de permissão, a foto fica aguardando aprovação do usuário. Quando eu coloco o código abaixo a tela do app abre branca:

/* obtem as permissões atuais que usuário tem em relação a sua aplicação */
$permissions = $facebook->api(“/me/permissions”);

/* verifica se o usuário já autorizou a publicação de fotos para a sua aplicação */
if (!array_key_exists(‘publish_stream’, $permissions[‘data’][0])) {
/* solicita permissão */
header( “Location: ” . $facebook->getLoginUrl(array(“scope” => “publish_stream”)) );
exit;
}

Tem alguma ideia do que pode ser?

Obrigado.

Olá Adriano,

Se o seu código abriu a tela em branco, provavelmente o usuário (você) aceitou as permissões da aplicação corretamente. Verifique as configurações de privacidade de sua conta. Talvez esteja bloqueando algo:
Menu -> Configurações de Privacidade -> Linha do Tempo e Marcação.

Boa sorte!

boa noite! parabéns pelos artigos são muito uteis….
estou criando um app simples em java para postar no murais de amigos….

pergunta: $facebook->api(“/me/feed”, “post”, array(
na sintaxe acima “/me” é o nome do usuário que estou postando no painel? em outras palavras se eu colocar fernando (meu usuário) vai postar no meu mural, se eu colocar rafael, por exemplo, vai postar no mural do rafael?

abs,

Bom dia Luiz! Legal que esta sendo útil.

O /me é uma referência para o usuário logado que esta acessando sua app no momento.

Você pode postar no mural do outro usuário usando o seu username como você citou. Ou você pode usar o ID do usuário também (Eu prefiro). Ex:
/10000101010100/feed

Você pode obter o id e outras informações do usuário usando a URL abaixo:
https://graph.facebook.com/username

Lembre-se que para postar no mural de outro usuário ele terá que ter permitido sua app poder efetuar essa operação.

Boa sorte!

Ola companheiro, muito bom os tutoriais!
É possível eu obter os dados do usuario através do e-mail de login dele?
Muitos exemplos mostram como recuperar atraves do id ou nome de usuario, mas precisaria de algo assim
http://graph.facebook.com/email@gmail.com

Obrigado pela Atenção

Denis

Olá Denis! Obrigado pelo feedback.

A informação do email do usuário não é publica através da API do facebook. Para obter o email do usuário pelo aplicativo você precisa solicitar a permissão “email”. Veja:
http://developers.facebook.com/docs/reference/login/email-permissions/

Não existe uma forma de busca de usuários por email! Um exemplo: Você consegue obter a lista de amigos do usuário que esta acessando sua aplicação, mas nessa lista, você não tem acesso ao email deles. A não ser que algum desses amigos também tenha aceitado a sua aplicação e fornecido a permissão de acesso ao email.

Outro exemplo, é que não existe uma permissão chamada friends_email, assim como existe friends_photos ou friends_location, etc..

Boa sorte!

Otima dica.. porém queria tirar uma duvida acredito que não tem muito a ver com o topico em si porém nao consegui resolver…
por exemplo, quando tento acessar pelo facebook o meu aplicativo exemplo fb.com/meuapp2

Aparece que deu falha para carregar a pagina no caso onde está hospedado o aplicativo que é no meu dominio…

sabe dizer o que sera isso?

Olá Roni! Como esta configurado sua app? Você configurou ela como Website with Facebook Login? como Page Tab? ou App on Facebook?
Se esta em dúvida, acesse o link https://developers.facebook.com/apps e entre nas configurações do seu aplicativo.

Boa sorte!

post show de bola! … uma questão adicional: como faço para manter uma base de dados com todos os usuarios que me concederam permissão de postagem no mural, para que, numa outra ocasião eu possa postar novamente em todos eles?

Olá Celso,

Verifique o artigo abaixo que trata exatamente sobre esse assunto.
Facebook sdk, publicação offline no mural do usuário com access token

O importante é guardar o id do usuário do facebook em sua base de dados.

Lembre-se que nada impede que o usuário remova as permissões do seu aplicativo da conta dele.

Boa sorte!

Como faço para marcar amigos na publicação?

Olá Alex,

Me parece que essa opção de marcação foi desabilitada na API. Existia uma forma usando o formato: @[user_id:1:name] ! Porém pelo que andei verificando não funciona mais. Cheguei até a testar por aqui e não funcionou.

Através da API é possível mencionar onde esteve (place) e com quem esteve (tags) no local. Mais detalhes sobre esses parâmetros, verificar os links:
(Veja que o parâmetro tags da postagem exige o parâmetro place)

https://developers.facebook.com/docs/reference/api/user/#posts
http://stackoverflow.com/questions/10864307/tag-friends-on-a-feed-post-with-php-facebook-sdk

Boa sorte!

Ja tentei com esses exemplos, porem sem sucesso. Só consegui marcar paginas como “place”. Gostaria de marcar é uma pessoa, por enquanto nada.

Olá Alex,

Na documentação do facebook, diz que não é possível marcar pessoas diretamente através de API (Algumas funções do facebook não é possível fazer diretamente pela API). É possível apenas marcar pessoas quando você marca páginas (através do place). Utilize juntamente o parâmetro tags com o place e veja se consegue algum resultado:

Para ver como usar o parâmetro tags: (NOTE: You cannot specify this field without also specifying a place)
https://developers.facebook.com/docs/reference/api/user/#posts

Boa sorte!

Tentei novamente, mas sem sucesso. Será que preciso de alguma outra permissão?


Where's The Comment Form?

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

%d blogueiros gostam disto: