Last active
February 18, 2016 13:27
-
-
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/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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>'; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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!