Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/02/2011, 15:07
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Pregunta FACEBOOK CONNECT - que hago mal ?

AMIGOS: he conseguido un codigo fuente para loggin via Facebook Connect

El tema es que despues de crearse la session, el flujo del programa no llega hacia donde se imprimen los datos del usuario.

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'] == )
  
// 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&aacute;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"] == // 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:




El script lo tengo corriendo en http://encontron.com/facebook/fbc.php

PD: el tuto es de ikhuerta
__________________
Salu2!

Última edición por jpinedo; 08/02/2011 a las 21:50