Skip to content

Instantly share code, notes, and snippets.

@dpasqua
Last active February 18, 2016 13:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save dpasqua/5911a0746397e853a347 to your computer and use it in GitHub Desktop.
Save dpasqua/5911a0746397e853a347 to your computer and use it in GitHub Desktop.
Exemplo de script de publicação na fanpage, facebook, usando PHP SDK v4.0.x ! Instale o SDK v4 através do composer. Mais detalhes de como instalar o SDK via composer pode ser obtido em: http://www.douglaspasqua.com/2015/05/24/criando-aplicativos-facebook-sdk-v4-em-php/
<?php
session_start(); // Sessao do php deve estar ativa
// datetimezone
date_default_timezone_set('America/Sao_Paulo');
// autoloader gerado pelo composer
require_once "vendor/autoload.php";
// configurar APP_ID e SECRET
define('APP_ID', '');
define('APP_SECRET', '');
// configurar id da fan page que deseja publicar
define('FANPAGE_ID', '');
// url que o facebook redireciona (deve apontar para o próprio script)
$redirect_url = 'http://localhost/publica-fanpage-v4.php';
// importa classes usadas
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\FacebookRedirectLoginHelper;
// APP_ID e SECRET
FacebookSession::setDefaultApplication(APP_ID, APP_SECRET);
// verifica se já existe uma sessão criada
$helper = new FacebookRedirectLoginHelper($redirect_url);
// verifica sessao existente
if(isset($_SESSION['fb_access_token'])) {
try {
$session = new FacebookSession($_SESSION['fb_access_token']);
// verifica se a sessao continua valida
if(!$session->validate()) {
$session = null;
}
} catch(\Exception $ex) {
$session = null;
}
}
if(!$session) {
$session = $helper->getSessionFromRedirect();
}
if ($session) {
try {
// sessao criada
// armazena token na sessao
$_SESSION['fb_access_token'] = $session->getToken();
// requisita permissioes do usuario e converte o resultado para array
$user_permissions = (new FacebookRequest($session, 'GET', '/me/permissions'))
->execute()
->getGraphObject()
->asArray();
// cria array com as permissoes concedidas
$perms_granted = [];
foreach($user_permissions as $perm) {
if($perm->status == 'granted') {
$perms_granted[$perm->permission] = true;
}
}
// verifica se o usuario concedeu as permissoes desejadas
if(!isset($perms_granted['manage_pages'])
|| !isset($perms_granted['publish_pages'])) {
$login_url = $helper->getLoginUrl(array('scope' => 'manage_pages,publish_pages'));
header('Location: ' . $login_url);
exit;
}
// pega token
$accounts = (new FacebookRequest($session, 'GET', '/me/accounts'))
->execute()
->getGraphObject()
->asArray();
$fanpage_access_token = null;
foreach($accounts['data'] as $account) {
if($account->id == FANPAGE_ID) {
$fanpage_access_token = $account->access_token;
}
}
// publica na fanpage
if($fanpage_access_token) {
$post_data = array(
"message" => "Exemplo de publicação.",
"name" => "Minha Publicação Facebook",
"link" => "http://www.douglaspasqua.com", // link da publiccao
"picture" => "http://www.douglaspasqua.com/wp-content/uploads/2014/04/facebook-150x150.png",
"caption" => "www.douglaspasqua.com",
"access_token" => $fanpage_access_token,
);
(new FacebookRequest($session, 'POST', '/me/feed', $post_data))->execute()->getGraphObject();
}
} catch(FacebookRequestException $ex) {
die(" Error : " . $ex->getMessage());
} catch(\Exception $ex) {
die(" Error : " . $ex->getMessage());
}
} else {
// URL de Login
$login_url = $helper->getLoginUrl(array('scope' => 'manage_pages,publish_pages'));
echo '<a href="'.$login_url.'">Login with Facebook</a>';
}
@dpasqua
Copy link
Author

dpasqua commented Feb 18, 2016

Oi Geovanek, Infelizmente esse código esta usando uma versão mais antiga de SDK do que a atual. Para funcionar tente alterar o composer.json da seguinte forma:

{ "require" : { "facebook/php-sdk-v4" : "4.0.*" } }

E rodar o composer update novamente!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment