Ciao a tutti, sto impazzendo da oggi per una cosa probabilmente semplicissima.
Ho trovato in rete un codice (ce ne sono molti altri ma non riesco a farne funzionare nessuno) che dovrebbe visualizzare il nome con cui sono loggato in facebook, credo che sia un problema di "dialogo" tra fb e il mio server o forse sbaglio io a "chiamare" lo script.
Ovviamente ho creato l'applicazione su fb developers e ho inserito l'App ID e l'App Secret.
Quando vado sul www.miosito.com/pagina.php mi appare la casellina "Login", facendo clic si apre la finestra di dialogo di facebook per consentire l'accesso all'applicazione, do il consenso ma non cambia nulla, non visualizza niente. Dove sbaglio?
Grazie a chi mi da una mano. Il codice è questo...
Codice PHP:
<?php
// Dal blog di Bartolo Illiano ([url]www.bartoloilliano.com[/url])
// Variabili di partenza da mettere in un eventuale file Esterno
require 'facebook.php';
// Istanza Applicazione.
$facebook = new Facebook(array(
'appId' => 'QUI METTI LA TUA APP ID',
'secret' => 'QUI METTI LA TUA APP SECRET',
'cookie' => true,
));
define('FACEBOOK_APP_ID', 'QUI METTI LA TUA APP ID');
define('FACEBOOK_SECRET', 'QUI METTI LA TUA APP SECRET');
function get_facebook_cookie($app_id, $application_secret) {
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $application_secret) != $args['sig']) {
return null;
}
return $args;
}
$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);
// Fine Variabili di partenza
?>
<style type="text/css">
body,td,th {
font-size: 10px;
color: #000;
font-family: Verdana, Geneva, sans-serif;
}
</style>
<fieldset><legend>Mi ricavo l'UID chiedendo i permessi tramite una mia applicazione</legend>
<? if ($cookie) { // Controllo se sono già loggato ?>
Il tuo ID Utente e' <?= $cookie['uid'] ?> - Permessi ottenuti
<? } else { // Altrimenti faccio apparire il tasto di login ?>
<fb:login-button></fb:login-button> - Accedere per ottenere i permessi di lettura dei dati
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true,
cookie: true, xfbml: true});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
</script>
<? } // Fine controllo ?>
</fieldset>
<? if ($cookie) { // Inizio Condizione Login Presente ?>
<fieldset><legend>Mi ricavo l'access Token per accedere all'xml tramite il Facebook Connect</legend>
<?
$session = $facebook->getSession();
$me = null;
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
if ($me) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
?>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $facebook->getAppId(); ?>',
session : <?php echo json_encode($session); ?>, // don't refetch the session when PHP already has it
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// whenever the user logs in, we refresh the page
FB.Event.subscribe('auth.login', function() {
window.location.reload();
});
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
<?php // echo "Access Token ->".$session['access_token']; ?>
</fieldset>
<fieldset><legend>Qualche dato sull'utente</legend>
Foto : [img]https://graph.facebook.com/<?php echo $uid; ?>/picture[/img]
Nome : <?=$me['first_name'];?>
Cognome : <?=$me['last_name'];?>
Link al profilo : <?=$me['link'];?>
Sesso : <?=$me['gender'];?>
Lingua : <?=$me['locale'];?>
Ultimo aggiornamento del profilo : <?=$me['updated_time'];?>
Descrizione personale : <?=$me['about'];?>
</fieldset>
<fieldset><legend>Ora vado a formulare una query che mi darà come risultato un xml che andrò a fare il parsing</legend>
<?
$access_token = $session['access_token'];
$uid = $cookie['uid'];
$sql = "SELECT uid, page_id FROM page_admin WHERE uid = ".$uid."";
$xml_url = "https://api.facebook.com/method/fql.query?query=".$sql."&access_token=".$access_token."";
// echo "".$xml_url."";
$xml = simplexml_load_file($xml_url);
echo "<trong>Sei proprietario di ".count($xml->page_admin)." Pagine[/b]"; // Mostro il numero di pagine
// Array delle pagine
?>
<select name="">
<? foreach($xml->page_admin as $page_admin){
$sql = " Select name from page where page_id = ".$page_admin->page_id."";
$xml_url = "https://api.facebook.com/method/fql.query?query=".$sql."&access_token=".$access_token."";
$xml = simplexml_load_file($xml_url);
foreach($xml->page as $page){
?>
<option value="<?=$page_admin->page_id;?>"><?=$page->name;?> ( ID <?=$page_admin->page_id;?> )</option>
<? } } ?>
</select>
<?
foreach($xml->page_admin as $page_admin){
echo "ID Pagina".$page_admin->page_id."
";
// mi ricavo il nome pagina
$sql = " Select name from page where page_id = ".$page_admin->page_id."";
$xml_url = "https://api.facebook.com/method/fql.query?query=".$sql."&access_token=".$access_token."";
$xml = simplexml_load_file($xml_url);
foreach($xml->page as $page){
echo "Nome Pagina : ".$page->name."
<hr>";
}
}
?>
</fieldset>
<fieldset><legend>Mi conto gli amici e se voglio li mostro anche a video</legend>
<?
$access_token = $session['access_token'];
$uid = $cookie['uid'];
$xml_url = "https://api.facebook.com/method/friends.get?&uid&access_token=".$access_token."";
$xml = simplexml_load_file($xml_url);
echo "[b]Hai ".count($xml->uid)." Amici[/b]"; // Mostro il numero di pagine
?>
<select name="">
<? foreach($xml->uid as $uid){ ?>
<option value="<?=$uid;?>"><?=$uid;?></option>
<? } ?>
</select>
</fieldset>
<? } // Fine Condizione Login Presente
?>
</body>
</html>