El tema es que despues de crearse la session, el flujo del programa no llega hacia donde se imprimen los datos del usuario.
![En dos](http://static.forosdelweb.com/fdwtheme/images/smilies/partido.png)
Creo que la session se crea porque se genera una URL como esta
Les dejo el codigo que estoy usando...... a ver si me orientan que me siento muy confundido. GRACIAS!
Código PHP:
<?php
// http://www.facebook.com/developers/apps.php?app_id=139447982785879&ret=2
// Config:
// Página "Acerca de" Como se desee, no afecta a la aplicación.
// Pagina "Web Site" debemos indicar Site URL con la url de nuestra aplicación.
// Página "Facebook Integration", rellenamos canvas URL con la carpeta donde está nuestro index.php // Canvas Type lo pasamos a Iframe.
// El resto lo dejamos por defecto.
// Preparando e iniciando la clase de facebook SDK
require 'src/facebook.php';
/*
Los datos de configuración los sacamos...
- De La página de nuestra aplicacion
- De la pestaña de configuracion "Facebook Integration"
- Viendo el código de ejemplo que nos ofrece facebook.
*/
$facebook = new Facebook(array(
'appId' => 'xxx',
'secret' => 'xxxxxxxxxxxxxx',
'cookie' => true,
));
// Extraemos la sesión, sin ella no sabremos si graph va a funcionar
$fbSession = $facebook->getSession();
// Si no tenemos sesión: Forzamos la sesión y pedimos permisos al usuario...
if (!$fbSession)
{
// Vemos si el usuario está cargando nuestra aplicación desde Facebook
if ( isset($_GET['fb_sig_in_iframe']) && $_GET['fb_sig_in_iframe'] == 1 )
// también nos sirve: if ( isset($_GET['fb_sig_in_iframe']) && $_GET['fb_sig_in_iframe'] == 1 )
{
// Aplicación cargada desde Facebook:
// Usamos la funcion getLoginUrl para conseguir el link de login
// Las urls de vuelta tendrán que ser entonces las de Facebook
$url = $facebook->getLoginUrl(array(
'canvas' => 1,
'fbconnect' => 1,
'next' => 'http://apps.facebook.com/encontron/',
'cancel_url' => 'http://apps.facebook.com/encontron/',
'req_perms' => 'read_stream,publish_stream' // Más permisos en: http://developers.facebook.com/docs/authentication/permissions
));
// Redirect a la página de login y permisos de Facebook
echo "<script type='text/javascript'>top.location.href = '$url';</script>";
}
else
{
// Fuera de Facebook:
// Usamos la funcion getLoginUrl para conseguir el link de login
// Las urls de vuelta tendrán que ser entonces las de nuestro site, no las de Facebook
$url = $facebook->getLoginUrl(array(
'canvas' => 0,
'fbconnect' => 1,
'next' => 'http://encontron.com/facebook/fbc.php',
'cancel_url' => 'http://encontron.com/facebook/fbc.php',
'req_perms' => 'read_stream,publish_stream' // Más permisos en: http://developers.facebook.com/docs/authentication/permissions
));
// Página para con un link para logarnos en Facebook. En este ejemplo solo mostramos el link...
echo "<a href='$url' target='_top'><img src='/facebook/fb_login.png'/></a>";
// También podríamos lanzar:
// header( 'Location: ' . $url );
// pero creo que quedaría extraño entrar en una web y ver Facebook de golpe...
}
die(); // un die, para parar el proceso, hay formas más elegantes, pero esto es un script ;)
}
// Con sesión ya iniciada...
echo "<h1>Ejemplo Aplicacion de Facebook</h1><p>Más info en <a href='http://blog.ikhuerta.com/crear-una-aplicacion-con-facebook-graph-api-en-modo-iframe'>el blog de ikhuerta</a></p>";
// Usando la Api
if ($fbSession )
{
try
{
// accedemos a los datos del usuario logado...
$me = $facebook->api("me");
echo "<h3>Hola ". $me['name'] . "</h3>";
// Y luego los datos de sus amigos
$myFriends = $facebook->api("me/friends");
echo "<p>Estos son tus amigos: </p><p>";
foreach ($myFriends['data'] as $friend)
{
echo $friend['name'] . " - ";
}
echo "</p>";
// Pedimos permisos al usuario
// FQL tables and fields reference at: http://developers.facebook.com/docs/reference/fql/
// Permission Names at: http://developers.facebook.com/docs/authentication/permissions
$fbperms = $facebook->api(array(
'method' => 'fql.query',
'query' => "SELECT publish_stream,user_likes FROM permissions WHERE uid = me()", // or "SELECT PERMISSION_NAME FROM permissions WHERE uid = ".$me['id']
'callback' => ''
));
if ( isset($fbperms[0]["publish_stream"]) && $fbperms[0]["publish_stream"] == 1 ) // comprobamos si tenemos permisos de publish_stream (para publicar en el muro)...
{
$newPostId = $facebook->api( '/me/feed', 'POST', array (
// vars at http://developers.facebook.com/docs/reference/api/post
'message' => 'Esto se ha escrito automaticamente con la API',
'link' => 'http://blog.ikhuerta.com/crear-una-aplicacion-con-facebook-graph-api-en-modo-iframe',
'name' => 'Aprende a usar la API de facebook en Modo Iframe'
));
echo "<h2>Se ha publicado un mensaje en el muro del usuario</h2>";
}
else
{
echo "<h2>No se ha podido publicar nada: El usuario no ha dado permiso a esta aplicación para publicar en su muro</h2>";
}
}
catch (FacebookApiException $e)
{
// Aqui escribe tus propias funciones para capturar el error de la excepcion "$e"
var_dump($e);
}
}
?>
No se si habre especificado bien todo...... en la creacion de la APP para fb:
![](http://encontron.com/files/captura.png)
El script lo tengo corriendo en http://encontron.com/facebook/fbc.php
PD: el tuto es de ikhuerta