Blog.resende.biz

Como publicar conteúdos numa página do facebook através de PHP - Parte 1

Pedro Resende
Pedro Resende
facebook_logo1

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-&gt;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.