Como publicar conteúdos numa página do facebook através de PHP - Parte 1
por Pedro Resende em 10/04/2013 às 15:13:24
Hoje, vou-vos explicar como se pode publicar conteúdos numa página do facebook utilizando a API. Esta é a primeira parte deste tutorial, na segunda irei explicar como se constrói uma aplicação no facebook para que seja possível publicar conteúdos.
Vamos começar por fazer o download do sdk do facebook que está no github, para isso temos de correr o seguinte comando:
git clone https://github.com/facebook/facebook-php-sdk.git
deverá aparecer uma coisa deste género
Cloning into 'facebook-php-sdk'...
remote: Counting objects: 680, done.
remote: Compressing objects: 100% (313/313), done.
Receiving objects: 100% (680/680), 258.11 KiB | 150 KiB/s, done.
remote: Total 680 (delta 329), reused 657 (delta 311)
Resolving deltas: 100% (329/329), done.
Uma vez terminado, já têm tudo o que é necessário. Vamos então criar o nosso ficheiro test.php dentro da directoria do SDK.
cd facebook-php-sdk
O que deverão colocar dentro do ficheiro test.php é o seguinte
<?php
require "src/facebook.php";
$app_id = '';
$app_secret = '';
$page_id = '';
define('FACEBOOK_APP_ID', $app_id);
define('FACEBOOK_SECRET', $app_secret);
$user = null;
$facebook = new Facebook(array(
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_SECRET,
'cookie' => true
));
$user = $facebook->getUser(); // Get the UID of the connected user, or 0 if the Facebook user is not connected.
if($user == 0) {
$login_url = $facebook->getLoginUrl($params = array('scope' => "publish_stream,offline_access,read_stream,manage_pages", "response" => "access_token"));
echo ("<script> top.location.href='".$login_url."'</script>");
} else {
$access_token = $facebook->getAccessToken();
$attachment = array(
'access_token' => $access_token
);
$page = $facebook->api('/me/accounts', 'get', $attachment);
$message = array(
'access_token' => $page['data'][0]['access_token'],
'message' => "Message",
'name' => "Name",
'link' => "http://blog.resende.biz/",
'description' => "Teste apagar sff"
);
$facebook->api('/' . $page_id . '/feed', 'POST', $message);
}
Vamos então explicar um pouco o código aqui colocado, começando pelo topo
$app_id = '';
$app_secret = '';
$page_id = '';
define('FACEBOOK_APP_ID', $app_id);
define('FACEBOOK_SECRET', $app_secret);
As três variáveis em branco vão ser posteriormente adicionadas com os dados da nossa aplicação do facebook e com a página onde irá ser publicado o conteúdo.
$user = null;
$facebook = new Facebook(array(
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_SECRET,
'cookie' => true
));
$user = $facebook->getUser(); // Get the UID of the connected user, or 0 if the Facebook user is not connected.
Esta secção vai buscar o estado do utilizador, verificar se existe algum utilizador "logado" no facebook, ou não. Se retornar o valor "0" na variável "user" então não foi feito o login e aparecerá uma janela de login, como podem ver na secção seguinte
if($user == 0) {
$login_url = $facebook->getLoginUrl($params = array('scope' => "publish_stream,offline_access,read_stream,manage_pages", "response" => "access_token"));
echo ("<script> top.location.href='".$login_url."'</script>");
}
Caso tenha sido feito o login, então vai buscar o access_token do utilizador
$access_token = $facebook->getAccessToken();
Pede o access_token da página
$attachment = array(
'access_token' => $access_token
);
$page = $facebook->api('/me/accounts', 'get', $attachment);
Prepara a mensagem e os seus conteúdos
$message = array(
'access_token' => $page['data'][0]['access_token'],
'message' => "Message",
'name' => "Name",
'link' => "http://blog.resende.biz/",
'description' => "Teste apagar sff"
);
e por fim envia a mensagem
$facebook->api('/' . $page_id . '/feed', 'POST', $message);
No próximo tutorial, vou-vos explicar como se cria uma aplicação no facebook para poder publicar o conteúdo.

Pedro Resende
With over two decades of experience as a Full Stack Developer, I have journeyed through diverse facets of software development. Commencing with the creation of compact institutional websites, I progressed to crafting portals for insurance brokers and contributed to substantial projects for renowned companies such as MS Amlin. My expertise expanded further by delving into product development for Advertiser Kwanko and collaborating with startups in their pivotal ramp-up stages. Notably, I've been involved in architecting extensive e-commerce solutions for global enterprises like Wayfair.
I currently serve as the Tech Lead at Emergn, contributing to the establishment and advancement of the Strategyzer client.