-
-
Save falexandre/55e16c0732ca9a61eebd 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 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